Was ich will :
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 :
3
tables, short_answer
, sa_sa_answer
, short_answer_answer
. 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 strong> 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
Ich habe dieses Problem bereits gelöst, aber niemand hat das Kopfgeld, aber wenn Sie php laravel-5 eloquent
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.
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
.