2016-11-29 27 views
1

Laravel雄辯有沒有一種更好的方式來獲得價格最低的物品?每個產品都有多個ticketType,每個ticketType可以有多個價格。Laravel以雄辯的姿態獲得最低價格

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

回答

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

將得到價格最低的產品價格假設是外地和hasActivePrices的名字是查詢範圍,返回雄辯查詢生成器。

first()將返回第一個模型,而不是一個集合,並orderBy()將排序的查詢