使用Eloquent在Laravel中获得最低价格

时间:2016-11-29 17:48:57

标签: php laravel foreach eloquent

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;
    }

1 个答案:

答案 0 :(得分:6)

$product->ticketTypes()->hasActivePrices()->orderBy('price')‌​->first() 

假设price是字段的名称,将获得价格最低的产品,hasActivePrices是返回Eloquent Query Builder的查询范围。

first()将返回第一个模型而不是集合,orderBy()将对查询进行排序