正在执行查询 where, whereHas in Laravel
Executing query with where, whereHas in Laravel
我正在 Laravel 5.5
中构建一个小型应用程序,我在其中查询如下内容:
$models = Contact::where('first_name', 'LIKE', '%'.$request->search_input.'%')
->orWhere('last_name', 'LIKE', '%'. $request->search_input.'%')
->orWhereHas('company', function ($q) use($request) {
$q->where('name', 'LIKE', '%'.$request->search_input.'%');
})
->whereHas('company', function ($query) {
$query->where('type', '=', 'Research');
})
->orderBy('created_at', 'desc')
->take(50)
->get();
背后的想法是,我想用[=16=搜索与first_name
、last_name
和他们的company name
(这是一个关系数据)的联系人列表] 并在 company list
中用 type = Research
过滤它们,我的意思是只有那些 contact
应该出现 company
type
作为 research
。
但目前我正在获取所有联系人列表,但没有按类型对其进行过滤。帮我解决这个问题。谢谢。
你需要使用where闭包:
Contact::where(function($q) use($request) {
$q->where('first_name', 'like', '%' . $request->search_input . '%')
->orWhere('last_name', 'like', '%' . $request->search_input . '%')
->orWhereHas('company', function ($q) use($request) {
$q->where('name', 'like', '%' . $request->search_input . '%');
});
})
->whereHas('company', function ($query) {
$query->where('type', 'Research');
})
->latest()
->take(50)
->get();
我正在 Laravel 5.5
中构建一个小型应用程序,我在其中查询如下内容:
$models = Contact::where('first_name', 'LIKE', '%'.$request->search_input.'%')
->orWhere('last_name', 'LIKE', '%'. $request->search_input.'%')
->orWhereHas('company', function ($q) use($request) {
$q->where('name', 'LIKE', '%'.$request->search_input.'%');
})
->whereHas('company', function ($query) {
$query->where('type', '=', 'Research');
})
->orderBy('created_at', 'desc')
->take(50)
->get();
背后的想法是,我想用[=16=搜索与first_name
、last_name
和他们的company name
(这是一个关系数据)的联系人列表] 并在 company list
中用 type = Research
过滤它们,我的意思是只有那些 contact
应该出现 company
type
作为 research
。
但目前我正在获取所有联系人列表,但没有按类型对其进行过滤。帮我解决这个问题。谢谢。
你需要使用where闭包:
Contact::where(function($q) use($request) {
$q->where('first_name', 'like', '%' . $request->search_input . '%')
->orWhere('last_name', 'like', '%' . $request->search_input . '%')
->orWhereHas('company', function ($q) use($request) {
$q->where('name', 'like', '%' . $request->search_input . '%');
});
})
->whereHas('company', function ($query) {
$query->where('type', 'Research');
})
->latest()
->take(50)
->get();