Laravel仅选择产品ID的类别

时间:2016-06-16 03:39:13

标签: laravel eloquent

您好我有一对多关系的类别和产品表。我想选择product_ids中产品的类别(它将从其他查询中获得)。我试过了

$categories = Category::with(['products' => function ($query) use($product_ids) {
    $query->whereIn('id', $product_ids);
    }])
    ->get();

以上查询将选择所有类别,即使产品不在product_ids中(如果不在produc_id中,则为空数组)但我只想选择那些在product_ids.please帮助中有产品的类别

2 个答案:

答案 0 :(得分:0)

我刚刚通过添加whereHas

解决了这个问题
$categories = Category::with(['products' => function ($query) use($product_ids) {
      $query->whereIn('id', $product_ids);
    }])
->whereHas('products', function ($q) use($product_ids) {
      $q->whereIn('id', $product_ids);
    })
    ->get();

答案 1 :(得分:0)

使用whereHas

$categories = Category::whereHas('products', function ($query) use($product_ids) {
    $query->whereIn('id', $product_ids);
    })
    ->get();