laravel 数据透视表返回所有相关数据

其实很简单的任务,但我错过了一些东西,请给我第二双眼睛来找出我的错


问题:查询只返回一行(应该返回 3)


//App\User.php

    public function languages() {

    return $this->belongsToMany(CustomLanguage::class,'custom_language_user','lang_id','user_id')->withPivot('lang_id','user_id');

}


//App\CustomLanguages.php

    public function users() {

    return $this->belongsToMany(User::class,'custom_language_user','user_id','lang_id')->withPivot('user_id','lang_id');

}

我试图查询用户 x 的所有语言:


        $user = User::find(Auth::id());

        foreach($user->languages as $l) {

            Log::info($l);

        }



//Returns [2019-09-18 11:38:51] local.INFO: [{"id":1,"lang_de":"Deutsch","lang_en":"German","pivot":{"lang_id":1,"user_id":1}}]

即使,在我的数据库中我有: user_id :1 ,1 ,1 lang_id :1 , 2 , 3


所以3行我有点想念一些东西,提前谢谢


慕莱坞森
浏览 141回答 1
1回答

翻过高山走不出你

您在关系中传递了错误的参数。如果你在User.php模型参数应该是。return $this->belongsToMany(CustomLanguage::class,'custom_language_user','user_id','lang_id')->withPivot('lang_id','user_id');如果你在CustomLanguages.php模型参数应该是。 return $this->belongsToMany(User::class,'custom_language_user','lang_id','user_id')->withPivot('lang_id','user_id');所以现在你的模型看起来像。 //App\User.php    public function languages() {    return $this->belongsToMany(CustomLanguage::class,'custom_language_user','user_id','lang_id')->withPivot('lang_id','user_id');}//App\CustomLanguages.php    public function users() {    return $this->belongsToMany(User::class,'custom_language_user','lang_id','user_id')->withPivot('user_id','lang_id');}
打开App,查看更多内容
随时随地看视频慕课网APP