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

Mic*_*ger 1 php foreach laravel 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;
    }
Run Code Online (Sandbox Code Playgroud)

Dev*_*von 6

$product->ticketTypes()->hasActivePrices()->orderBy('price')??->first() 
Run Code Online (Sandbox Code Playgroud)

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

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