Php Laravel多个关系无法获取透视表

Php Laravel多个关系无法获取透视表,php,laravel,Php,Laravel,我有laravel的基本身份验证系统,一个名为SecurityQuestion的自定义模型和一个名为SecurityQuestion\u user 使用者 某些控制器 第一选项 foreach(Auth::user()->securityquestion_user as $question) { dd($question); } foreach(Auth::user()->securityquestion_user() as $question) { dd($que

我有laravel的基本身份验证系统,一个名为SecurityQuestion的自定义模型和一个名为SecurityQuestion\u user

使用者

某些控制器

第一选项

foreach(Auth::user()->securityquestion_user as $question) {
    dd($question);
}
foreach(Auth::user()->securityquestion_user() as $question) {
    dd($question);
}
错误:未定义的属性:Illumb\Database\Eloquent\Relations\BelongToMany::$pivot

第二选项

foreach(Auth::user()->securityquestion_user as $question) {
    dd($question);
}
foreach(Auth::user()->securityquestion_user() as $question) {
    dd($question);
}
错误:返回false


是否在控制器中添加了身份验证的命名空间? 比如:

如果未导入,则将其用于:

foreach(\Auth::user()->securityquestion_user as $question) {
    dd($question);
}
并在用户模型中更正您的函数


public function securityquestion_user() {
    return $this->belongsToMany('App\SecurityQuestion::class', 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}
public function securityquestion_user() {
  return $this->hasMany (SecurityQuestion::class, 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}

因为你的第一个选择是正确的,除了它

尝试在用户模型中使用hasMany而不是belongtomany


public function securityquestion_user() {
    return $this->belongsToMany('App\SecurityQuestion::class', 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}
public function securityquestion_user() {
  return $this->hasMany (SecurityQuestion::class, 'securityquestion_user', 'question_id', 'user_id')->withPivot('question_id', 'user_id', 'answer');
}

尝试这样做,withPivot函数需要一个参数:数组或字符串

public function securityquestion_user() {
    return $this
        ->belongsToMany(SecurityQuestion::class, 'securityquestion_user', 'question_id', 'user_id')
        ->withPivot(['question_id', 'user_id', 'answer']);
}
“问题id”和“用户id”不必在withPivot函数中,因为它们是外键。

好的,伙计们,我知道了

我修改了与此的关系:

public function securityquestion_user() {
    return $this->belongsToMany('App\SecurityQuestion', 'securityquestion_user', 'user_id', 'question_id')->withPivot('question_id', 'user_id', 'answer');
}
基本上,我颠倒了顺序,将“user\u id”参数放在“question\u id”参数之前

foreach(Auth::user()->securityquestion_user as $question) {
        print '<pre>';
        print_r($question->pivot->answer);
        print '</pre>';
    }
foreach(Auth::user()->securityquestion\u用户作为$question){
打印“”;
打印($question->pivot->answer);
打印“”;
}

非常感谢您的关注。

您能尝试一下像->withPivot(['x','y','z']),添加方括号-我使用了Illumb\Support\Facades\Auth;在顶部,所以它起作用了。你写的那本书是错的。首先,您将“App\SecurityQuestion”作为字符串键入(带引号),也不需要指定App\因为我使用了App\SecurityQustion;在文件的顶部。好的!我不知道你已经进口了!但是我已经在我的项目中实现了它,它工作正常!你是否正确地表达了你的感情?你能再检查一下吗!