Laravel Eloquent是否有更好的方法来获得价格最低的物品?每个产品都有多个ticketTypes,每个ticketType可以有多个价格。
public function includeLowestPrice(Product $product)
{
$lowestPriceTicket = null;
foreach ($product->ticketTypes()->hasActivePrices()->get() as $type) {
foreach ($type->prices()->get() as $ticketPrice) {
if (!$lowestPriceTicket || $ticketPrice->value < $lowestPriceTicket->value) {
$lowestPriceTicket = $ticketPrice;
}
}
}
return $lowestPriceTicket ? $this->item($lowestPriceTicket, new TicketPriceTransformer()) : null;
}
答案 0 :(得分:6)
$product->ticketTypes()->hasActivePrices()->orderBy('price')->first()
假设price是字段的名称,将获得价格最低的产品,hasActivePrices是返回Eloquent Query Builder的查询范围。
first()
将返回第一个模型而不是集合,orderBy()
将对查询进行排序