在整数上调用成员函数addEagerConstraints()

Jul*_*oro 6 eager-loading laravel eloquent

我试图加载关系:

$tournaments = Tournament::with('numCompetitors')->latest()->paginate(config('constants.PAGINATION'));
Run Code Online (Sandbox Code Playgroud)

我在Tournament中的关系返回一个整数:

public function numCompetitors()
{
    return $this->competitors()->count(); // it returns 24
}
Run Code Online (Sandbox Code Playgroud)

我得到了:

Call to a member function addEagerConstraints() on integer
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会失败.

Ale*_*nin 10

你这样做是错的.如果您想计算关系,请使用withCount()正确定义的关系:

Tournament::withCount('competitors')->latest()->paginate(config('constants.PAGINATION'));
Run Code Online (Sandbox Code Playgroud)

如果要计算关系中的结果数而不实际加载它们,可以使用withCount方法,该方法会{relation}_count在结果模型上放置一列.

https://laravel.com/docs/5.4/eloquent-relationships#counting-related-models