Laravel5.1快速查询

忘记了就查查:

助手方法:redirect() url() view() action() route() config() with()


键值属性:

['as'=>'a2','uses'=>'PagesController@about’]

['middleware' => 'auth','uses' => 'UserController@showProfile’]

路由组:

Route::group(['as' => 'admin::'], function () { 

Route::get('dashboard', ['as' => 'dashboard1', function () { 

 // Route named "admin::dashboard1” 

return "admin::dashboard1”; 

 }]); 

 });

控制器构造方法:

public function __construct()

    {

        $this->middleware('auth');

        $this->middleware('log', ['only' => ['fooAction', 'barAction']]);

        $this->middleware('subscribed', ['except' => ['fooAction', 'barAction']]);

    }

注册一个指向控制器的资源路由:

Route::resource('photo', 'PhotoController’);

资源管理器处理的动作:

Verb

Path

Action

Route Name

GET

/photo

index

photo.index

GET

/photo/create

create

photo.create

POST

/photo

store

photo.store

GET

/photo/{photo}

show

photo.show

GET

/photo/{photo}/edit

edit

photo.edit

PUT/PATCH

/photo/{photo}

update

photo.update

DELETE

/photo/{photo}

destroy

photo.destroy

局部资源路由:

Route::resource('photo', 'PhotoController',

                ['only' => ['index', 'show']]);

Route::resource('photo', 'PhotoController',

                ['except' => ['create', 'store', 'update', 'destroy']]);

命名资源路由:

Route::resource('photo', 'PhotoController',

                ['names' => ['create' => 'photo.build']]);

嵌套资源:一个照片资源可能会附加有很多的“评论” photos/{photos}/comments/{comments}

Route::resource('photos.comments', 'PhotoCommentController’);

扩展资源控制器:注意顺序

Route::get('photos/popular', 'PhotoController@method');

Route::resource('photos', 'PhotoController’);

隐式控制器:

Route::controller('users', 'UserController’);

public function getShow($id) 响应/users/show/1的GET请求

public function getAdminProfile() 响应/users/admin-profile的GET请求

指定路由名称:

Route::controller('users', 'UserController', [

    'getShow' => 'user.show',

]);

也可以一次性多个;

Route::controllers([

    'auth' => 'Auth\AuthController',

    'password' => 'Auth\PasswordController',

    'p' => 'PagesController',

]);

Request Information:

$uri = $request->path();

$request->is('admin/*’)

$url = $request->url();

$method = $request->method();

$request->isMethod('post’)

Retrieving Input:

$name = $request->input('name’);('name', 'Sally');

array inputs,use "dot” notation:$input = $request->input('products.0.name');

$request->has('name’)

$input = $request->all();

$input = $request->only('username', 'password');

$input = $request->except('credit_card’);

Flashing Input To The Session:$request->flash();

$request->flashOnly('username', 'email');

$request->flashExcept('password’);

Flash Input Into Session Then Redirect:

return redirect('form')->withInput();

return redirect('form')->withInput($request->except('password'));

Retrieving Old Data:

$username = $request->old('username’); or {{ old('username') }}

Retrieving Cookies:$value = $request->cookie('name’);

Attaching A New Cookie:

$response = new Illuminate\Http\Response('Hello World');

$response->withCookie(cookie('name', 'value', $minutes));

return $response;

long-lived cookie:$response->withCookie(cookie()->forever('name', 'value'));

Retrieving Uploaded Files:

$file = $request->file('photo’);

$request->hasFile('photo’)

Validating Successful Uploads:$request->file('photo')->isValid()

Moving Uploaded Files:

$request->file('photo')->move($destinationPath);

$request->file('photo')->move($destinationPath, $fileName);

http://api.symfony.com/2.7/Symfony/Component/HttpFoundation/File/UploadedFile.html

视图:

resources/views/greeting.php

return view('greeting', ['name' => 'James']);

文件夹下:return view('admin.profile', $data);

view()->exists('emails.customer’)

$view = view('greeting')->with('name', 'Victoria’);

数据共享给所有的视图:

AppServiceProvider类下的boot()方法: view()->share('key', 'value’);

视图组件绑定到多个视图:

view()->composer(

    ['profile', 'dashboard'],

    'App\Http\ViewComposers\MyViewComposer'

);

视图创建者:

view()->creator('profile', 'App\Http\ViewCreators\ProfileCreator’);

扩展布局模版:@extends('layouts.master’)

@section('title', 'Page Title')

@section('sidebar')

    @@parent

    <p>This is appended to the master sidebar.</p>

@endsection

@section('content')

    <p>This is my body content.</p>

@endsection

Blade & JavaScript 框架:Hello, @{{ name }}.

数据存在就将其输出:{{ $name or 'Default' }}

不希望自己的数据被htmlentities转义:Hello, {!! $name !!}.

@unless 指令:

@unless (Auth::check())

    You are not signed in.

@endunless

@forelse ($users as $user)

    <li>{{ $user->name }}</li>

@empty

    <p>No users</p>

@endforelse


@while (true)

    <p>I'm looping forever.</p>

@endwhile

引入子视图(继承父视图数据,又可以额外引入): 

@include('shared.errors’) @include('view.name', ['some' => 'data’])

注释:{{-- This comment will not be present in the rendered HTML —}}

Service Injection:

@inject('metrics', 'App\Services\MetricsService’)

{{ $metrics->monthlyRevenue() }}

自定义指令:

创建一个 @datetime($var) 指令:

public function boot()

    {

        Blade::directive('datetime', function($expression) {

            return "<?php echo with{$expression}->format('m/d/Y H:i'); ?>";

        });

    }

数据库:

Running Raw SQL Queries:

$users = DB::select('select * from users where active = ?', [1]);

$results = DB::select('select * from users where id = :id', ['id' => 1]);

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

$affected = DB::update('update users set votes = 100 where name = ?', ['John']);

$deleted = DB::delete('delete from users’);

Running A General Statement:DB::statement('drop table users’);

Database Transactions:automatically rolled back or committed

DB::transaction(function () {

    DB::table('users')->update(['votes' => 1]);

    DB::table('posts')->delete();

});

Manually Using Transactions:

DB::beginTransaction();

DB::rollBack();

DB::commit();

Query Builder:

 $users = DB::table('users')->get();

$user = DB::table('users')->where('name', 'John')->first();

$email = DB::table('users')->where('name', 'John')->value('email’);

Chunking Results From A Table:

DB::table('users')->chunk(100, function($users) {

    foreach ($users as $user) {

        // return false; //stop further chunks from being processed 

    }

});

Retrieving A List Of Column Values:

$titles = DB::table('roles')->lists('title');

foreach ($titles as $title) {

    echo $title;

}

specify a custom key column for the returned array:

$roles = DB::table('roles')->lists('title', 'name');

foreach ($roles as $name => $title) {

    echo $title;

}

Aggregates:

$users = DB::table('users')->count();

$price = DB::table('orders')->max('price’);

$price = DB::table('orders')

                ->where('finalized', 1)

                ->avg('price’);

Specifying A Select Clause:

$users = DB::table('users')->select('name', 'email as user_email')->get();

$users = DB::table('users')->distinct()->get();

add a column to its existing select clause:

$query = DB::table('users')->select('name');

$users = $query->addSelect('age')->get();

Raw Expressions:

$users = DB::table('users')

                     ->select(DB::raw('count(*) as user_count, status'))

                     ->where('status', '<>', 1)

                     ->groupBy('status')

                     ->get();

Inner Join Statement:

$users = DB::table('users')

            ->join('contacts', 'users.id', '=', 'contacts.user_id')

            ->join('orders', 'users.id', '=', 'orders.user_id')

            ->select('users.*', 'contacts.phone', 'orders.price')

            ->get();

$users = DB::table('users')

            ->leftJoin('posts', 'users.id', '=', 'posts.user_id')

            ->get();

Advanced Join Statements:

DB::table('users')

        ->join('contacts', function ($join) {

            $join->on('users.id', '=', 'contacts.user_id')->orOn(...);

        })

        ->get();

DB::table('users')

        ->join('contacts', function ($join) {

            $join->on('users.id', '=', 'contacts.user_id')

                 ->where('contacts.user_id', '>', 5);//orWhere

        })

        ->get();

Unions:

$first = DB::table('users')

            ->whereNull('first_name');

$users = DB::table('users')

            ->whereNull('last_name')

            ->union($first) //unionAll

            ->get();

Where Clauses:

$users = DB::table('users')->where('votes', '=', 100)->get();

$users = DB::table('users')->where('votes', 100)->get();

$users = DB::table('users')->where('votes', '>=', 100)->get();

$users = DB::table('users')->where('votes', '<>', 100)->get();

$users = DB::table('users')->where('name', 'like', 'T%')->get();

$users = DB::table('users')->where('votes', '>', 100)->orWhere('name', 'John')->get();

whereBetween:

$users = DB::table('users')->whereBetween('votes', [1, 100])->get();

$users = DB::table('users')->whereNotBetween('votes', [1, 100])->get();

whereIn / whereNotIn:

$users = DB::table('users')->whereIn('id', [1, 2, 3])->get();

$users = DB::table('users')->whereNotIn('id', [1, 2, 3])->get();

whereNull / whereNotNull:

$users = DB::table('users')->whereNull('updated_at')->get();

$users = DB::table('users')->whereNotNull('updated_at')->get();

Advanced Where Clauses:

Parameter Grouping:

DB::table('users')

            ->where('name', '=', 'John')

            ->orWhere(function ($query) {

                $query->where('votes', '>', 100)

                      ->where('title', '<>', 'Admin');

            })

            ->get();

Exists Statements:

DB::table('users')

            ->whereExists(function ($query) {

                $query->select(DB::raw(1))

                      ->from('orders')

                      ->whereRaw('orders.user_id = users.id');

            })

            ->get();

orderBy:

$users = DB::table('users')

                ->orderBy('name', 'desc')

                ->get();

groupBy / having / havingRaw:

$users = DB::table('users')

                ->groupBy('account_id')

                ->having('account_id', '>', 100)

                ->get();

$users = DB::table('orders')

                ->select('department', DB::raw('SUM(price) as total_sales'))

                ->groupBy('department')

                ->havingRaw('SUM(price) > 2500')

                ->get();

skip / take:

$users = DB::table('users')->skip(10)->take(5)->get();

Inserts:

DB::table('users')->insert(

    ['email' => 'john@example.com', 'votes' => 0]

);

DB::table('users')->insert([

    ['email' => 'taylor@example.com', 'votes' => 0],

    ['email' => 'dayle@example.com', 'votes' => 0]

]);

Auto-Incrementing IDs:

$id = DB::table('users')->insertGetId(

    ['email' => 'john@example.com', 'votes' => 0]

);

Updates:

DB::table('users')

            ->where('id', 1)

            ->update(['votes' => 1]);

Increment / Decrement:

DB::table('users')->increment('votes');

DB::table('users')->increment('votes', 5);

DB::table('users')->decrement('votes');

DB::table('users')->decrement('votes', 5);

DB::table('users')->increment('votes', 1, ['name' => 'John']);

update `users` set `votes` = `votes` + 1, `name` = ?

Deletes:

DB::table('users')->delete();

DB::table('users')->where('votes', '<', 100)->delete();

DB::table('users')->truncate();

Pessimistic Locking:

DB::table('users')->where('votes', '>', 100)->sharedLock()->get();

DB::table('users')->where('votes', '>', 100)->lockForUpdate()->get();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值