Maison >base de données >tutoriel mysql >Comment trouver des cours non inscrits dans une application Rails à l'aide d'ActiveRecord ?
Question :
Utilisation d'une application Rails avec les modèles suivants : Étudiant , Course et StudentEnrollment, comment puis-je rechercher une liste de cours dans la table Cours qui ne sont pas associés à un étudiant via le Tableau StudentEnrollment ?
Solution :
Pour y parvenir, vous pouvez utiliser l'opération JOIN dans ActiveRecord. Cependant, contrairement à la méthode joins(), qui accepte un nom de table comme argument, vous pouvez également transmettre une chaîne SQL brute pour spécifier des conditions de jointure personnalisées.
Plus précisément, pour la requête donnée :
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
Dans Rails, vous pouvez exécuter cette requête comme suit :
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)
Cette requête récupérera tous les cours qui ne sont pas associés à l'étudiant spécifié dans le student_enrollments, tout en garantissant également que seuls les cours actifs sont inclus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!