$pidArray 包含产品 ID,其中一些产品 ID 可以相同。IE: 34 34 56 77 99 34. 看起来 whereIn 方法不会返回它已经在 $pidArray 中找到的 productId 的结果,即使它有不同的索引。
$productDataForOrder = Product::whereIn('id', $pidArray)->get(['id','price']);
$totalAmount = $productDataForOrder->sum('price');
$productDataForOrder 现在包含产品数据,但仅适用于 $pidarray 中的唯一 ProductID。因此,当 sum 函数运行时,sum 是错误的,因为它没有考虑相同 productID 的多个实例的价格。
以下代码也不会为数组中的每个产品 ID 返回相同的对象。因此,如果 $pidArray 包含三个相同的产品 ID,则查询将只返回一个包含一个对象的集合,而不是三个。
$query = Product::select();
foreach ($pidArray as $id)
{
$query->orWhere('id', '=', $id);
}
$productDataForOrder = $query->get(['id','price']);
$totalAmount = $productDataForOrder->sum('price');