Wie erhalte ich mit Laravel Eloquent spezifische Daten?

8

Was ich will :

  1. Um die grade von dem zu erhalten, was der Benutzer in der Datenbank geantwortet hat, wenn er existiert, und um die Note dieser Antwort zu erhalten.

Was ich habe :

  1. Ich habe 3 tables, short_answer , sa_sa_answer , short_answer_answer .
  2. Nun hat short_answer table eine Frage, und jede Frage hat viele Antworten in der short_answer_answer -Tabelle und die Note ist auch dort enthalten, die Frage kann 1 oder mehr antworten.

Welchen Code habe ich:

Controller

%Vor%

Das Problem ist:

Ich bekomme nur die Antwort, wo die Antwort der Antwort des Benutzers entspricht. Aber was ist, wenn ich TWO dieselbe Antwort und andere grade und offensichtlich andere Frage habe. Es kann das falsche auswählen.

Hinweis: Ich benutze Laravel5.1

Update: Tabellenstruktur

short_answer
 - name
 - question

sa_sa_answer
 - short_answer_id
 - short_answer_answer_id

short_answer_answer
 - answer
 - grade

Aktualisieren

Ich habe dieses Problem bereits gelöst, aber niemand hat das Kopfgeld, aber wenn Sie

Jonjie 22.09.2017, 01:42
quelle

2 Antworten

2

Wir können dieses Problem mit einer einzigen Abfrage lösen:

%Vor%

Dies optimiert die Schleife, sodass wir die Datenbank nur einmal für alle Fragen und Antworten abfragen müssen. Es löst auch das Problem in der Frage, da die Abfrage die Beziehungen zwischen Frage und Antwort beibehält, so dass wir nicht versehentlich die falschen Antworten für die Fragen auswählen.

    
Cy Rossignol 01.10.2017 21:36
quelle
1

Dieser Teil Ihres Codes:

%Vor%

Sie erhalten alle Antworten von ShortAnswerAnswer , was gleichbedeutend mit $sa_answer[$key] ist. Es gibt keine Bedingung, um darauf hinzuweisen, ob die Antwort aus der richtigen Frage stammt, die Sie erwartet haben.

Also, um Ihr Problem zu lösen, müssen Sie auch die Frage aufzeigen. Wie:

%Vor%

P / s: Dieser Teil:

%Vor%

Dann ist $sa_question_id[$key] genau $value .

    
Duc Filan 25.09.2017 01:35
quelle

Tags und Links