我使用下面的代码从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%'
我认为这样更好,遵循向查询传递参数的良好实践:
BookingDates::whereRaw('email = ? or name like ?', [$request->email,"%{$request->name}%"])->get();
好:
BookingDates::where('email',$request->email)
->orWhere('name','like',"%{$request->name}%")->get();
您可以在文档Laravel 5.5中看到它。
您也可以使用Laravel侦察,使搜索更容易。
这里是文档。
$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();