web-dev-qa-db-ja.com

Laravel-5 'LIKE'相当(Eloquent)

以下のコードを使用して、Laravel 5を使用してデータベースからいくつかの結果を引き出します。

BookingDates::where('email', Input::get('email'))->orWhere('name', 'like', Input::get('name'))->get()

ただし、orWhereLikeはどの結果とも一致していないようです。そのコードはMySQLステートメントに関して何を生み出しますか?

私は次のようなことを達成しようとしています。

select * from booking_dates where email='[email protected]' or name like '%John%'

前もって感謝します。

110
V4n1ll4

データベースで何が実行されているのかを知りたい場合は、dd(DB::getQueryLog())を使用してどのクエリが実行されたかを確認してください。

これを試して

BookingDates::where('email', Input::get('email'))
    ->orWhere('name', 'like', '%' . Input::get('name') . '%')->get();
293
Pawel Bieszczad

クエリにパラメーターを渡すという優れたプラクティスに従って、これはより優れていると思います。

BookingDates::whereRaw('email = ? or name like ?', [$request->email,"%{$request->name}%"])->get();

ドキュメントで見ることができます、Laravel 5.5。

Laravelスカウトを使用して、検索を簡単にすることもできます。 ドキュメントはこちらです

0
JaredDmz