2017-02-19 2 views
0

Ich versuche, eine Liste der Frage und seine jeweiligen Antworten zu zeigen. Ich speichere alles auf 3 verschiedenen Datenbanktabellen, Fragen> Art der Antwort> Liste der möglichen Antworten.Zeigen Sie Informationen über mehrere Tabellen auf der gleichen Ansicht auf Laravel

Dies ist, was ich auf dem Controller getan haben: alle

public function show() 
{ 
    $questions = DB::table('questions') 
     ->join('typeAnswers', 'typeAnswers.id', '=', 'questions.answer_id') 
     ->join('answers', 'answers.typeAnswers_id', '=', 'typeAnswers.id') 
     ->get(); 

    return view('questions.showquestions', ['questions' => $questions]); 
} 

Nach der Ansicht, die Fragen, die ich eine foreach Iteration verwenden zeigen: Ich

@extends('welcome') 

@section('content') 
    @foreach($questions as $question) 
     <div class="panel panel-default"> 
      <div class="panel-heading"> 
       <h3 class="panel-title">{{$question->statement}}</h3> 
      </div> 
      <div class="panel-body"> 
       {{$question->value}} 
      </div> 
     </div> 
    @endforeach 
@endsection 

Auf der Datenbank für das Testen nur habe eine Frage und die möglichen Antworten sind Ja oder Nein. Aber anstatt eine Frage und zwei mögliche Antworten zu sehen, bekomme ich dieselbe Frage zweimal und jedes Mal eine andere Antwort.

+0

Sie erhalten die gleiche Frage zweimal, weil eine solche Frage 2 Antworten hat. Versuchen Sie, diese Lösung zu implementieren: http://stackoverflow.com/questions/21387696/how-to-concatenate-strings-from-multiple-rows-in-one-column-inner-join-in-one – Ditto

+0

Haben Sie überlegt zu verwenden "Beredt"? –

Antwort

0

prüfen diese Abfrage:

$questions = DB::table('questions') 
->join('typeAnswers', 'typeAnswers.id', '=', 'questions.answer_id') 
->join('answers', 'answers.typeAnswers_id', '=', 'typeAnswers.id') 
->get(); 

Du questions Tabelle mit typeAnswers so das Ergebnis hier Beitritt ist soetwas wie:

Q1 A1 
Q1 A2 

Und auf Sicht das gewünschte Ergebnis wie ist:

Q1 [A1, A2] 

So dass Sie Antworten unter einer Frage zeigen können. Modifizieren Sie Ihre Anfrage entsprechend.

Verwandte Themen