Php 雄辩的询问和/或
我有一个场景,在这个场景中,我正在使用Laravel中的Eloquent搜索数据库 我有以下疑问: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') . '%')
$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;。