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%'
답변
데이터베이스에서 실행 된 dd(DB::getQueryLog())
내용을 보려면 어떤 쿼리가 실행되었는지 확인하십시오.
이 시도
BookingDates::where('email', Input::get('email'))
->orWhere('name', 'like', '%' . Input::get('name') . '%')->get();
답변
$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();
답변
나는 이것에 대한 범위가 있으며, 누군가를 돕기를 바랍니다.
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();
라 라벨 스카우트를 사용하여 쉽게 검색 할 수 있습니다.
다음은 설명서입니다.
답변
