この記事では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」をよりわかりやすく記述するだけでなく、条件付きクエリを整理する優れた方法でもあります。
このタイプの記事について詳しくは、サイトで読むことができます
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3