2017-09-25 7 views
0

Laravelプロジェクトにはsurveyquestionという2つのテーブルがあります。私はhasManyThroughという雄弁な関係を作りたいので、アンケートに属するすべての質問をループすることができます。Laravel hasManyThrough - 予想されるすべての結果を返さない

調査表:

---------------- 
| id | title | 
---------------- 
| 1 | fruit | 
---------------- 

質問表:

---------------- 
| id | title | 
---------------- 
| 1 | apple? | 
| 3 | banana? | 
| 4 | kiwi? | 
| 5 | pear? | 
---------------- 

SurveyQuestionテーブル:私の調査モデルで

-------------------------------- 
| id | survey_id | question_id | 
-------------------------------- 
| 1 | 1   | 1   | 
| 1 | 1   | 4   | 
| 1 | 1   | 5   | 
-------------------------------- 

私は現在、次の

public function questions() 
{ 
    return $this->hasManyThrough(
     Questions::class, 
     SurveyQuestion::class, 
     'question_id', // Foreign key on surveyquestion table... 
     'id', // Foreign key on questions table... 
     'id', // Local key on survey table... 
     'survey_id' // Local key on surveyquestion table... 
    ); 
} 
を持っています

と私は私のSurveyQuestionモデルで:

public function survey() 
{ 
    return $this->belongsTo(Survey::class); 
} 

public function question() 
{ 
    return $this->belongsTo(Questions::class); 
} 

しかしquestion_idが1のとき、私はループ$survey->questionsて、それが唯一の行を返しているとき?私は間違って何をしていますか?

+1

あなたのアンケートと質問表には関係がありません。次の点を確認してください:https://laravel.com/docs/5.5/eloquent-relationships#has-many-through –

+0

@MahfuzShishir Mortezaによって提案された多対多の多くの関係を使用していただきありがとうございます。 – xylar

答えて

1

多少の関係です。

調査モデル

public function questions() 
{ 
    return $this->belongsToMany(Question::class, 'survey_question'); 
} 

質問モデル

public function surveys() 
{ 
    return $this->belongsToMany(Survey::class, 'survey_question'); 
} 

次にあなたが

$survey = Survey::with('questions')->find($id); 

@foreach($survey->questions as $question) 
    //... 
@endforeach 
+0

@xylar投票を忘れることはありません。 –

0

が01のための構造に続いてdocs

を参照してくださいすることができます整数 名 - - 文字列

質問 ID - 整数 survey_id - 整数 名 - 文字列

SurveyQuestionあなたはこの

調査 IDのような構造を持っている必要があります id - 整数 question_id - 整数 タイトル - 文字列

しかし、あなたはあなたの中間テーブルの外部キーを持っていないが、この最初の問題を解決して、私はあなたがこの問題を取り除くだろうと思います。

関連する問題