Laravel のドキュメントによると、「or」条件は、最初の引数として Closure を orWhere メソッドに渡すことでグループ化できます。
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere(function($query) {
$query->where('name', 'Abigail')
->where('votes', '>', 50);
})
->get();
私が望んでいたのは、クエリ内で次のような変数を使用することです。
$q = $request->get('query');
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere(function($query) {
$query->where('name', $q)
->where('votes', '>', 50);
})
->get();
次のように 2 番目の引数として渡そうとしました。
$q = $request->get('query');
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere($q, function($query, $q) {
$query->where('name', $q)
->where('votes', '>', 50);
})
->get();
しかし、うまくいきません。何か助けはありますか?
------------------------
データをより近いものに渡すには use() 関数を使用する必要があります
ref link PHP では、クロージャとは何ですか。また、なぜクロージャで "use" を使用するのでしょうか。識別子?
$q = $request->get('query');
$users = DB::table('users')
->where('votes', '>', 100)
->orWhere(function ($query) use($q) { // use function to pass data inside
$query->where('name', $q)
->where('votes', '>', 50);
})
->get();