J'ai deux tables survey
et question
dans un projet Laravel. Je veux créer une relation éloquente hasManyThrough afin que je puisse boucler toutes les questions qui ont appartenu à l'enquête.Laravel hasManyThrough - ne pas retourner tous les résultats attendus
Enquête Tableau:
----------------
| id | title |
----------------
| 1 | fruit |
----------------
Question Tableau:
----------------
| id | title |
----------------
| 1 | apple? |
| 3 | banana? |
| 4 | kiwi? |
| 5 | pear? |
----------------
table SurveyQuestion:
--------------------------------
| id | survey_id | question_id |
--------------------------------
| 1 | 1 | 1 |
| 1 | 1 | 4 |
| 1 | 1 | 5 |
--------------------------------
Dans mon modèle d'enquête J'ai actuellement les suivantes
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...
);
}
et dans mon modèle SurveyQuestion J'ai:
public function survey()
{
return $this->belongsTo(Survey::class);
}
public function question()
{
return $this->belongsTo(Questions::class);
}
Cependant quand je boucle à travers $survey->questions
il est seulement retournais la ligne quand question_id est 1? Qu'est-ce que j'ai mal fait?
Votre sondage et votre tableau de questions ne contiennent aucune relation. Vérifiez que: https://laravel.com/docs/5.5/eloquent-relationships#has-many-through –
@MahfuzShishir merci en utilisant plusieurs à plusieurs relation suggéré par Morteza résolu mon problème. – xylar