我有此产品型号:
public function categories() {
return $this->belongsToMany('App\Category', 'product_categories');
}
在我的控制器中:
public function search(Request $request) {
return Product::with([
'categories' => function($categories) use ($request) {
// ...
}
]);
}
如果我尝试在$request
函数中使用categories
,则仅按类别搜索,但显示所有产品。
我如何仅显示产品信息已在$request->category_id
中定义类别?
答案 0 :(得分:1)
您可以在laravel中使用whereHas
关键字:
public function search(Request $request) {
return Product::with('categories')
->whereHas('categories', function ($query) use ($request){
$query->where('category_id', $request->category_id);
})->get();
}
这里是docs
答案 1 :(得分:0)
您可以通过以下方式进行搜索:
public function search(Request $request) {
return Product::with('categories')
->whereHas('categories', function ($q) use (request) {
$q->where('id', $request->category_id);
});
}