この記事では、laravel eloquent when 条件を実装しています。フィルターアウト プロセスでは、リクエストに応じて if-else 条件を使用します。以下のコードを確認してください。
if($request->filter_by == 'amount') { $query->where('amount', '>', request('amount', 0)); } if($request->filter_by == 'created_at') { $query->orderBy('created_at', request('order', 'desc')); }
when() メソッドを使用できます。より読みやすく、ユーザーフレンドリーになっています。以下のコードを確認してください。
$query = Order::query(); $query->when(request('filter_by') == 'amount', function($q){ return $q->where('amount','>', request('amount',0)); }); $query->when(request('filter_by') == 'created_at', function($q){ return $q->orderBy('created_at', request('order','desc')); });
3 番目の引数を when メソッドに渡すことができます。このクロージャは、最初の引数が false と評価された場合にのみ実行されます。
$query = Order::query(); $query->when(request('filter_by') == 'amount', function($q){ return $q->where('amount','>', request('amount',0)); }, function($q){ return $q->orderBy('created_at', request('order','desc')); })->get();
これは、同じ「IF」をよりわかりやすく記述するだけでなく、条件付きクエリを整理する優れた方法でもあります。
この種の記事について詳しくは、サイトで読むことができます
以上がLaravelでeloquentを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。