2016-11-29 64 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()将排序的查询