我试图加载关系:
$tournaments = Tournament::with('numCompetitors')->latest()->paginate(config('constants.PAGINATION'));
我在锦标赛中的关系返回一个整数:
public function numCompetitors()
{
return $this->competitors()->count(); // it returns 24
}
我得到了:
Call to a member function addEagerConstraints() on integer
我不明白为什么会失败。
答案 0 :(得分:7)
你做错了。如果您想计算关系,请使用withCount()
与正确定义的关系:
Tournament::withCount('competitors')->latest()->paginate(config('constants.PAGINATION'));
如果您想要计算关系中的结果数而不实际加载它们,您可以使用withCount方法,该方法会在结果模型上放置
{relation}_count
列。
https://laravel.com/docs/5.4/eloquent-relationships#counting-related-models