2 回答

TA貢獻1155條經驗 獲得超0個贊
因為with()需要得到關系。addEagerConstraints來自源代碼。當您使用即時加載時,您的關系構建器將調用addEagerConstraints.
但是,您的關系方法是返回字符串(的結果avg())而不是變形關系。所以會發生錯誤。
你可以改變你的方法,如:
public function trader_ratings()
{
return $this->morphMany(TraderRatings::class, 'rateable')->select('*', DB::raw('AVG(rating) AS avg_rating'));
}

TA貢獻1818條經驗 獲得超7個贊
該錯誤清楚地表明 trader_ratings 已經計算了平均值,并且不再是您急切加載所需的構建器實例。所以可能會做一些如下的事情,(沒有測試代碼,只是從我的頭頂)
public function trader_ratings()
{
return $this->morphMany(TraderRatings::class, 'rateable')->select('rateable_id','rateable_type','rating');
}
// Then
$customer_classes = CustomerClassBooking::with([
'trader_class',
'trader_class.trader_ratings' => function($query`){
$query->avg('rating)
},
,'vendor'])-> // rest of query
- 2 回答
- 0 關注
- 149 瀏覽
添加回答
舉報