Php 雄辩的询问和/或

Php 雄辩的询问和/或,php,mysql,laravel,Php,Mysql,Laravel,我有一个场景,在这个场景中,我正在使用Laravel中的Eloquent搜索数据库 我有以下疑问: $search = $request->get('q'); $users = User::where('username', 'like', '%' . $request->get('q') . '%') ->orWhere('displayName', 'like', '%' . $request->get('q') . '%')

我有一个场景,在这个场景中,我正在使用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->where->where->get

我对链接有点困惑,但我想说:使用LIKE操作符搜索文章列,但只搜索打开的文章

在听起来不那么密集的情况下,是否有一种简单的思维方式可以将我的原始SQL思想转换为雄辩的查询

在我看来,这将是一个查找打开的文章的基本查询,然后是一个通过每个字段进行搜索的嵌套查询。

使用嵌套的where约束:

User::where(function($query) use($request) {
    $query->where('username', 'like', '%' . $request->get('q') . '%')
        ->orWhere('displayName', 'like', '%' . $request->get('q') . '%')
        [...]
})->published()->get();

用户::where…->published->get可能有用吗?只是为了避免我在文档中被绊倒,这类似于bog标准MySQL中的where?那么,在应用进一步的约束之前,查询本身在哪里呢?不,它只是等效于使用括号:。。。其中用户名“…%”或显示名“…%”。。。和出版='开放'哦。。。所以它甚至不像我想的那么复杂?我想我把自己搞糊涂了。是否有办法将通过Elequent创建的SQL记录在Laravel中?替换->获取->toSql。或者将查询包装在\DB::enableQueryLog中;dd\DB::getQueryLog;。