Laravel Advanced Where クロージャに変数を渡す
Laravel ドキュメントでは、テーブルを結合するためにクロージャで whereExists を使用する例が提供されています。
DB::table('users') ->whereExists(function($query) { $query->select(DB::raw(1)) ->from('orders') ->whereRaw('orders.user_id = users.id'); }) ->get();
しかし、外部変数をクロージャに渡す必要がある場合はどうすればよいでしょうか。検索クエリとして使用しますか?
->where('city_id', '=', $this->city->id) ->where(function($query) { $query->where('name', 'LIKE', '%'.$searchQuery.'%') ->orWhere('address', 'LIKE', '%'.$searchQuery.'%') })
現在の解決策は、新しいプロパティを作成し、$this を使用してそれにアクセスすることですが、より便利な方法はありますか?
はい、キーワードを使用して親スコープからクロージャに変数を渡します:
DB::table('users')->where(function ($query) use ($activated) { $query->where('activated', '=', $activated); }) ->get();
PHP 7.4 では、より短いアロー関数を使用できます。構文:
DB::table('users')->where(fn($query) => $query->where('activated', '=', $activated)) ->get();
アロー関数と通常のクロージャの主な違い:
以上がLaravel Advanced Where クロージャに変数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。