タイトルが示すように、子モデルが更新されたときに、親モデルのタイムスタンプをトリガーできます。たとえば、Comment
は Post
に属しており、子モデルを更新して親モデルのタイムスタンプを更新すると便利な場合があります。たとえば、Comment
モデルが更新されたときに、親の Post
モデルの Updated_at
タイムスタンプの更新を自動的にトリガーしたいとします。 Eloquent
作り方は簡単です。子モデルのリレーションシップの名前を含む touch
属性を追加するだけです。
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { /** * 涉及到的所有关联关系。 * * @var array */ protected $touches = ['post']; /** * 获取评论所属的文章。 */ public function post() { return $this->belongsTo('App\Post'); } }
プリロードを使用すると、リレーションシップから指定された列を取得できます。
$users = App\Book::with('author:id,name')->get();
Auth::once()
を使用して単一リクエストのユーザーを認証できますが、このメソッドは認証しません。 Cookie
セッションを使用します。これは、このメソッドがステートレス API の構築に役立つ可能性があることを意味します。
if (Auth::once($credentials)) { // }
ユーザー固有の URL またはルートで redirect()
メソッドを使用できるだけでなく、コントローラー内のパラメーターを持つメソッドで使用されます。
return redirect()->action('SomeController@method', ['param' => $value]);
withDefault()
を使用してリレーションシップのエラーを回避する方法リレーションシップが呼び出されたとき、リレーションシップが存在しない場合は致命的なエラーが発生します。 $post->user->name
のように、withDefault()
を使用することは回避できます。
/** 获取文章作者 */ public function user() { return $this->belongsTo('App\User')->withDefault(); }
$loop
変数 が blade
の foreach
にあります。 2 つのループがある場合でも、$loop
変数を使用して親変数を取得できます。
@foreach ($users as $user) @foreach ($user->posts as $post) @if ($loop->parent->first) This is first iteration of the parent loop. @endif @endforeach @endforeach
Eloqument
クエリの実行後、map()
を使用して行を変更できます。
$users = User::where('role_id', 1)->get()->map(function (User $user) { $user->some_column = some_function($user); return $user; });
dd()
Eloqument
の最後に $test->dd() を簡単に使用します
、dd($result)
の代わりに。
// 优化前 $users = User::where('name', 'Taylor')->get(); dd($users); // 优化后 $users = User::where('name', 'Taylor')->get()->dd();
hasMany()
リレーションシップがあり、親クラス オブジェクトから多くのサブクラス オブジェクトを保存したい場合は、次のようにすることができます。 saveMany()
を使用して、必要な効果を実現します。
$post = Post::find(1); $post->comments()->saveMany([ new Comment(['message' => 'First comment']), new Comment(['message' => 'Second comment']), ]);
Model::all() での列の指定
Eloqument
の Model::all( )
では、返される列を指定できます。
$users = User::all(['id', 'name', 'email']);
Blade
の @auth
if の代わりに
@auth ディレクティブを使用できます。
ステートメントを使用して、ユーザーが認証されているかどうかを確認します。
@if(auth()->user()) // The user is authenticated. @endif
@auth // The user is authenticated. @endauth
Mailables## を使用して送信する場合メールを送信せずにプレビューすることができます。
Route::get('/mailable', function () { $invoice = App\Invoice::find(1); return new App\Mail\InvoicePaid($invoice); });
Eloquent の
hasMany() 関係では、レコードをフィルターで除外できます。 n 個のサブレコードを持ちます。
// Author -> hasMany(Book::class) $authors = Author::has('books', '>', 5)->get();
Post::withTrashed()->where('author_id', 1)->restore();
timestamps() タイムスタンプだけでなく、時間付き
timestampsTz() も含まれています。ゾーンのタイムスタンプ。
Schema::create('employees', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email'); $table->timestampsTz(); });
if (view()->exists('custom.page')) { // Load the view }
Route::group(['prefix' => 'account', 'as' => 'account.'], function() { Route::get('login', 'AccountController@login'); Route::get('register', 'AccountController@register'); Route::group(['middleware' => 'auth'], function() { Route::get('edit', 'AccountController@edit'); }); });
whereDay() 、
whereMonth() 、
の日付と時刻のメソッドwhere Year() 、
whereDate() 、
whereTime() これらのメソッドはすべて、
Eloquent で日付を確認するためのメソッドです。
$products = Product::whereDate('created_at', '2018-01-31')->get(); $products = Product::whereMonth('created_at', '12')->get(); $products = Product::whereDay('created_at', '31')->get(); $products = Product::whereYear('created_at', date('Y'))->get(); $products = Product::whereTime('created_at', '=', '14:13:58')->get();
関係での
orderBy() の使用
Eloquent 関係で # を直接指定できます。 ##orderBy()
。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">public function products()
{
return $this->hasMany(Product::class);
}
public function productsByName()
{
return $this->hasMany(Product::class)->orderBy('name');
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
20: 符号なし整数
を使用せず、unsignedInteger()
または # を使用してください。 ##integer()->unsigned() としないと、一連のエラーが発生します。
Schema::create('employees', function (Blueprint $table) { $table->unsignedInteger('company_id'); $table->foreign('company_id')->references('id')->on('companies'); });
Laravel 関連の技術記事の詳細については、
Laravel チュートリアル 列にアクセスして学習してください。 以上がLaravel を使用する際のヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。