2017-04-16 137 views
3
  • 我有模式Order中使用自定義屬性模型。
  • 訂購有許多Item
  • 一種Item具有price屬性(從數據庫)。
  • OrdergetAmountAttribute方法,該方法是這樣的:

/** 
* @return double 
*/ 

public function getAmountAttribute() 
{ 
    return $this->items->sum('price'); 
} 


/** 
* @return \Illuminate\Database\Eloquent\Relations\HasMany 
*/ 
public function items() 
{ 
    return $this->hasMany(Item::class); 
} 

所以我可以簡單地做$order->amount上獲取訂單的項目的總價格。Laravel 5.4 - 集合


現在我的Order集合,我希望獲取每一筆訂單,其總價格開始於10,如何做到這一點,因爲我不能用我的自定義屬性上where聲明?

+1

如果你有一個現有的集合,只需要運行一個循環。否則,你可能需要一個自定義的SQL查詢。 – HtmHell

+0

集合上的'filter()'應該足夠了。 –

回答

0

您可以通過->havingRaw('SUM(price) > 10')

0

做到這一點,您只能得到訂單,而不是獲得訂單的全部收集和獲取所需的訂單(起步價10總價訂單)的期望集合。

->get(function($order) { 
     return $order->amount > 10; 
    }); 
+0

在執行'get'方法之前,我可以實現這個目標嗎?我的意思是當你還在「建造」收藏。 –

+0

@Eliya是的。這就是我所回答的。 –