存在限制条件不在显示表中,在关联的中间表中,提取中间表数据进行搜索查询:
public function index(Request $request)
{
$where = function ($query) use ($request) {
if ($request->has('name') and $request->name != '') {
$search = "%" . $request->name . "%";
$query->where('name', 'like', $search);
}//本表查询
if ($request->has('category_id') and $request->category_id != '-1') {
$product_id=DB::table('category_product')->where('category_id',$request->category_id)->pluck('product_id');//取中间表数据
if(count($product_id)>0)
{
$query->where('id',$product_id);
}else{
$query->where('id',-1);
}
}
};
$products = Product::with('categories', 'brand')->where($where)->get();
// return $products;
return view('admin.shop.product.index')->with('products', $products);
}