我有一个名为assetIDs
的数组,如下所示
$assetIDs = Collection {#505 ▼
#items: array:2 [▼
0 => 4
1 => 7
]
}
而且我在表中的数据如下所示
我正在使用此查询上表
$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
具有两个值4
和7
就像下面的集合一样。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');