Heim >Datenbank >MySQL-Tutorial >Wie finde ich mit ActiveRecord nicht eingeschriebene Kurse in einer Rails-Anwendung?
Frage:
Verwenden einer Rails-Anwendung mit den folgenden Modellen: Student , Kurs und StudentEnrollment, wie kann ich eine Liste von Kursen in der Tabelle „Kurse“ abfragen, die keinem Studenten zugeordnet sind? StudentEnrollment-Tabelle?
Lösung:
Um dies zu erreichen, können Sie die JOIN-Operation in ActiveRecord verwenden. Im Gegensatz zur Methode „joins()“, die einen Tabellennamen als Argument akzeptiert, können Sie jedoch auch eine unformatierte SQL-Zeichenfolge übergeben, um benutzerdefinierte Join-Bedingungen anzugeben.
Insbesondere für die angegebene Abfrage:
SELECT * FROM Courses c LEFT JOIN StudentEnrollment se ON c.id = se.course_id WHERE se.id IS NULL AND se.student_id = <SOME_STUDENT_ID_VALUE> and c.active = true
In Rails können Sie diese Abfrage wie folgt ausführen:
Course.joins("LEFT JOIN student_enrollments ON courses.id = student_enrollments.course_id") .where("student_enrollments.id IS NULL AND student_enrollments.student_id = ?, courses.active = ?", <SOME_STUDENT_ID_VALUE>, true)
Diese Abfrage ruft alle Kurse ab, die nicht mit dem angegebenen Studenten in verknüpft sind student_enrollments-Tabelle und stellt gleichzeitig sicher, dass nur aktive Kurse enthalten sind.
Das obige ist der detaillierte Inhalt vonWie finde ich mit ActiveRecord nicht eingeschriebene Kurse in einer Rails-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!