实际上很简单的任务,但是我错过了一些事情,请再给我双眼以找出我的错
问题:查询仅返回一行(应返回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行 我有点想念东西,在此先感谢
答案 0 :(得分: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');
}