Laravel 5.4 Eager loading belongsToMany Relationship null Binding

时间:2017-04-13 14:01:02

标签: laravel laravel-5 eloquent laravel-5.4

我有一个懒惰加载belongsToMany关系的现有模型就好了。

我的问题是,当我尝试加载关系时,我得到一个空的结果

当我检查查询时,它显示关系查询的绑定为空。

这是我的(简化)代码:

// Controller
public function filter(Request $request, App\Programs $program)
{
    $program = $program->newQuery();

    $program->select(
            'slug',
            'title',
            'season'
    );

    $program->with([
        'sports'
    ]);
    return $program->get();
}

// Model
class Programs extends Model
{
    public function sports(){
        return $this->belongsToMany('App\Sport', 'program_sport', 'program_id', 'sport_id');
    }

}

1 个答案:

答案 0 :(得分:2)

问题是你没有从数据库中取id所以Eloquent无法获得相关的模型。而不是:

 $program->select(
            'slug',
            'title',
            'season'
    );

你应该使用:

 $program->select(
            'id',
            'slug',
            'title',
            'season'
    );

请注意,您可以使用更简单的语法(并且不要像这样在控制器中注入模型):

return Program::select('id','slug', 'title', 'season')->with('sports')->get();

此外,我不知道你为什么在这种情况下使用路由模型绑定