我有一个名为assetIDs的数组,如下所示

$assetIDs = Collection {#505 ▼
  #items: array:2 [▼
    0 => 4
    1 => 7
  ]
}


而且我在表中的数据如下所示

php - Laravel查询中带有where条件的数组值-LMLPHP

我正在使用此查询上表

$supplier_id = SupplierAsset::whereIn('asset_id',$asset_ids)->pluck('supplier_id');

以上查询的结果如下

Collection {#510 ▼
  #items: array:3 [▼
    0 => 1
    1 => 1
    2 => 2
  ]
}


此处,whereIn返回所有满足条件的可能行。实际上我需要得到结果,就像supplier_id具有两个assetIDs数组的值一样。在我的表中,supplier_id=1具有两个值47就像下面的集合一样。

Collection {#510 ▼
  #items: array:3 [▼
    0 => 1
    1 => 1
  ]
}


有人可以给我建议解决方案吗?

最佳答案

你可以试试:

$supplier_id = SupplierAsset::whereIn('asset_id',$asset_ids)
               ->groupBy('supplier_id')
               ->havingRaw('count(distinct asset_id) = ' . count($assetIDs))
               ->pluck('supplier_id');

10-05 22:00