Laravel-5' LIKE'等效(雄辩)

时间:2015-06-10 16:19:15

标签: php mysql laravel-5

我使用以下代码从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%'

提前致谢。

7 个答案:

答案 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();

postgres documentation

答案 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);