Laravel-5 'LIKE' 等效物 (Eloquent)

2022-08-30 06:22:31

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

答案 1

如果要查看在数据库中运行的内容,请使用查看运行了哪些查询。dd(DB::getQueryLog())

试试这个

BookingDates::where('email', Input::get('email'))
    ->orWhere('name', 'like', '%' . Input::get('name') . '%')->get();

答案 2

我有这方面的范围,希望它能帮助别人。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();

推荐