簡體   English   中英

Laravel許多關系無法獲取數據透視表

[英]Laravel many many relation cannot get pivot table

我有laravel的基本身份驗證系統,名為SecurityQuestion的自定義模型和名為securityquestion_user的數據透視表

用戶

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

SomeController

第一選擇

foreach(Auth::user()->securityquestion_user as $question) {
    dd($question);
}

錯誤:不確定的屬性:Illuminate \\ Database \\ Eloquent \\ Relations \\ BelongsToMany :: $ pivot

第二選擇

foreach(Auth::user()->securityquestion_user() as $question) {
    dd($question);
}

錯誤:返回假

好的,我明白了,

我修改了與此的關系:

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

基本上,我顛倒了順序,將“ user_id”參數放在“ question_id”參數之前。

foreach(Auth::user()->securityquestion_user as $question) {
        print '<pre>';
        print_r($question->pivot->answer);
        print '</pre>';
    }

非常感謝您的關注。

您是否在控制器中為auth添加了名稱空間? 喜歡:

use Auth;

如果未導入,則使用它:

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');
}

因為除了它,您的第一個選擇是正確的!

在用戶模型中嘗試使用hasMany而不是belongsToMany

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']);
}

並且'question_id'和'user_id'不需要在withPivot函數中,因為它們是外鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM