Я использую приведенный ниже код, чтобы получить некоторые результаты из базы данных с Laravel 5.
BookingDates::where('email', Input::get('email'))->orWhere('name', 'like', Input::get('name'))->get()
Однако похоже, что orWhereLike не дает никаких результатов. Что этот код производит в терминах операторов MySQL?
Я пытаюсь добиться чего-то вроде следующего:
select * from booking_dates where email='my@email.com' or name like '%John%'
where
метода.preg_replace("/[^A-Za-z0-9 ]/", '', $search);
потому что мне не нужны специальные символы, и он также защищает его от%
инъекций$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();
источник
У меня есть возможности для этого, надеюсь, это кому-нибудь поможет. https://laravel.com/docs/master/eloquent#local-scopes
public function scopeWhereLike($query, $column, $value) { return $query->where($column, 'like', '%'.$value.'%'); } public function scopeOrWhereLike($query, $column, $value) { return $query->orWhere($column, 'like', '%'.$value.'%'); }
Применение:
$result = BookingDates::whereLike('email', $email)->orWhereLike('name', $name)->get();
источник
Я думаю, что это лучше, если следовать хорошей практике передачи параметров в запрос:
BookingDates::whereRaw('email = ? or name like ?', [$request->email,"%{$request->name}%"])->get();
Вы можете увидеть это в документации Laravel 5.5.
источник