我使用以下代码从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%'
提前致谢。
答案 0 :(得分:287)
如果您想查看数据库中运行的内容,请使用dd(DB::getQueryLog())
查看运行的查询。
试试这个
BookingDates::where('email', Input::get('email'))
->orWhere('name', 'like', '%' . Input::get('name') . '%')->get();
答案 1 :(得分: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();
答案 2 :(得分:2)
下面提到的查询对我有用,也许对某人有帮助。
$platform = DB::table('idgbPlatforms')->where('name', 'LIKE',"%{$requestedplatform}%")->first();
答案 3 :(得分:1)
我对此有范围,希望它能对某人有所帮助。
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();
答案 4 :(得分:0)
遵循将参数传递给查询的良好做法,我认为这样做会更好:
APM Server transport error (503): Unexpected APM Server response
queue is full
You can see it in the documentation, Laravel 5.5.
您还可以使用Laravel侦察器,使其更易于搜索。 Here is the documentation.
答案 5 :(得分:0)
如果您使用 Postgres,则可以使用关键字 ILIKE 代替 LIKE 以使匹配根据活动区域设置不区分大小写。这不在 SQL 标准中,而是 PostgreSQL 扩展。
这对我有用。
User::where('name, 'ILIKE', $search)->get();
答案 6 :(得分:-1)
如果您想在控制器上使用它,您可以执行以下操作:
$generatequery = 'select * from blogs where is_active = 1 and blog_name like '%'.$blogs.'%' order by updated_at desc, id desc';
$blogslists = DB::select($generatequery);