我有一个场景,我在Laravel中使用Eloquent搜索数据库。
我有以下查询:
$search = $request->get('q');
$users = User::where('username', 'like', '%' . $request->get('q') . '%')
->orWhere('displayName', 'like', '%' . $request->get('q') . '%')
->orWhere('email', 'like', '%' . $request->get('q') . '%')
->orWhere('role', 'like', '%' . $request->get('q') . '%')
->orWhere('department', 'like', '%' . $request->get('q') . '%')
->orWhere('location', 'like', '%' . $request->get('q') . '%')
->orWhere('directDialIn', 'like', '%' . $request->get('q') . '%')
->orWhere('mobileNumber', 'like', '%' . $request->get('q') . '%')->get();
我有以下查询范围:
/**
* Scope a query by published
*/
public function scopePublished($query)
{
return $query->where('published', 'open');
}
我想使用查询范围只搜索打开的文章。
我知道您可以这样链接where
:Article::where()->where()->where()->get()
我对链接感到有些困惑,但我想说:用LIKE运算符搜索文章列,但仅限于文章打开的位置。
没有密集的声音,是否有一种简单的心态将我的RAW SQL思想转换为Eloquent查询?
在我的脑海中,它将是一个查询打开文章的基本查询,然后是搜索每个字段的嵌套查询。
答案 0 :(得分:1)
使用嵌套的where()
约束:
User::where(function($query) use($request) {
$query->where('username', 'like', '%' . $request->get('q') . '%')
->orWhere('displayName', 'like', '%' . $request->get('q') . '%')
[...]
})->published()->get();