【问题标题】:Laravel 5.4 Eager loading belongsToMany Relationship null BindingLaravel 5.4急切加载belongsToMany关系null绑定
【发布时间】:2017-09-09 16:45:16
【问题描述】:

我有一个现有模型可以延迟加载 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');
    }

}

【问题讨论】:

    标签: laravel laravel-5 eloquent laravel-5.4


    【解决方案1】:

    问题是您没有从数据库中获取id,因此 Eloquent 无法获取相关模型。而不是:

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

    你应该使用:

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

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

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

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

    【讨论】:

    • 不要奇怪,但如果可以的话,我会吻你。我就这么放心了。 XD
    • 另外,这回答了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多