Laravel - 带有数据透视表的查询构建器,返回全部位置

时间:2017-12-05 14:41:58

标签: laravel-5

我有桌面客户,产品和customer_products。 在customer_products中,有idcustomer_idproduct_id列。 在搜索表单中,我有' products'输入字段,可以添加多个产品进行搜索。 因此,在这种情况下$request->products是数组,我想在查询构建器中传递该数组,以返回从$request->products数组中购买至少所有产品的所有客户。 如果每个客户只有一个产品,我会使用whereIn方法,但是当客户订购了多个产品时,我不知道如何解决这个问题。 我试过foreach但是我没有得到想要的结果。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案。如果有人有同样的问题,这就是给我正确结果的解决方案,其中有方法是我需要的:

$customesrs = Customers::with('products');
if($request->has('products'))
{
  foreach($request->products as $product)
  {
   $customers->whereHas('products', function($query) use ($product) {
     $query->where('product_id', $product);
   });
  }
}
$customers->get();