laravel 5.2を使用していて、複数の列を介してクエリを実行しようとしている検索機能を作成しようとしていますが、期待した結果が得られません。
私はこのクエリを使用しています:
$wachat = Table::where('key', '=', $d1)
->orWhere('message', 'LIKE', "%{$searchByContact}%")
->orWhere('abc', 'LIKE', "%{$searchByContact}%")
->orWhere('xyz', 'LIKE', "%{$searchByContact}%")
->orderBy('id', 'DESC')->paginate(20);
結果は得られていますが、ここでは、キーが何でもあるすべてのものをフィルタリングしたいと思います。しかし、abooveクエリを使用すると、すべてのキーから結果が得られます。とにかくクエリを作成して、キーが何でもある場所に結果を表示することができます。
問題は->orWhere()
、以前の呼び出しの検索条件をキャンセルするメソッドを使用していることです。
->where()
クエリの2番目の部分にはクロージャを使用する必要があります。
$wachat = Table::where('key', '=', $d1)
->where(function($query) use ($searchByContact) {
$query->where('message', 'LIKE', "%{$searchByContact}%")
->orWhere('abc', 'LIKE', "%{$searchByContact}%")
->orWhere('xyz', 'LIKE', "%{$searchByContact}%");
})
->orderBy('id', 'DESC')
->paginate(20);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加