为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕莱坞森 2022-01-14 18:04:24
其实很简单的任务,但我错过了一些东西,请给我第二双眼睛来找出我的错问题:查询只返回一行(应该返回 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行我有点想念一些东西,提前谢谢
查看完整描述

1 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您在关系中传递了错误的参数。


如果你在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');

}


查看完整回答
反对 回复 2022-01-14
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信