Laravel-5 эквивалент "LIKE" ( "Красноречивый" )
Я использую приведенный ниже код, чтобы вытащить некоторые результаты из базы данных с помощью 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%'
Спасибо заранее.
Ответы
Ответ 1
Если вы хотите увидеть, что работает в базе данных, используйте dd(DB::getQueryLog())
, чтобы просмотреть, какие запросы выполнялись.
Попробуйте это
BookingDates::where('email', Input::get('email'))
->orWhere('name', 'like', '%' . Input::get('name') . '%')->get();
Ответ 2
Я думаю, что это лучше, следуя передовой практике передачи параметров в запрос:
BookingDates::whereRaw('email = ? or name like ?', [$request->email,"%{$request->name}%"])->get();
Вы можете увидеть это в документации, Laravel 5.5.
Вы также можете использовать разведчик Laravel и упростить поиск. Вот документация.
Ответ 3
$data = DB::table('borrowers')
->join('loans', 'borrowers.id', '=', 'loans.borrower_id')
->select('borrowers.*', 'loans.*')
->where('loan_officers', 'like', '%' . $officerId . '%')
->where('loans.maturity_date', '<', date("Y-m-d"))
->get();