2017-05-06 73 views
0

所以我有一個反饋模式爲多對多的多態關係,現在我可以說:如何從Laravel的多態關係中獲得平均值?

$user->feedbacks 

,並會相應檢索的關係,現在我想要做的事,如:

$user->feedbacks->getAverage() 

簡單地吐了平均反饋率(這是數字1到5)

我增加了以下功能以我Feedback.php模型文件:

public function getAverage(){ 

    $described = $this->avg('described'); 
    $recommend = $this->avg('recommend'); 
    $communication = $this->avg('communication'); 

    $average = ($described + $recommend + $communication)/3; 

    return $average; 
} 

但是Laravel不會承認這種方法。

請幫忙。

+0

我找到解決類似的問題在我的用戶模型,而不是我把這個功能: 公共職能getAverageFeedback(){ $反饋= $這個 - > morphToMany(反饋::類, 'feedbackable'); $ describe = $ feedbacks-> avg('describe'); $ recommend = $ feedbacks-> avg('recommend'); $ communication = $ feedbacks-> avg('communication'); $ average =($ describe + $ recommend + $ communication)/ 3; return $ average; } 但我仍然不知道這是否是最好的方法 –

回答

1

該方法應該在用戶模型上。如果您查看對象鏈,您正試圖在Collection類實例上調用getAverage方法(這就是查詢Model的相關模型將爲您返回的內容)。集合沒有名爲getAverage()的方法。

要解決您的問題,請在用戶模型及其內部創建getAverage()方法,獲取相關的反饋模型集合並根據檢索到的模型計算平均值。