基于用户id的带有透视表的Laravel过滤器



寻求帮助。我有下面的代码,但它无法执行搜索的查询。我只需要查看基于用户id的搜索数据。

$id = Auth::id();

$promo = User::with('promos');
if($request->input('q')){

$promo->whereHas('promos', function ($query) use ($request) {
$query->where('title', 'LIKE', "%{$request->input('q')}%");
});

return view('admin.promo.index',[
'promos' => $promo->find($id)
]);
}
return view('admin.promo.index',[
'promos' => $promo->find($id)
]);

您可以使用whereHas:从Promo侧执行此操作

return view('admin.promo.index', [
'promos' => Promo::whereHas('user', fn ($q) => $q->whereKey(Auth::id()))
->when($request->input('q'), fn ($q, $input) => $q->where('title', 'LIKE', "%$input%"))
->get()
]);

您可以使用when方法,而不是使用if语句。

最新更新