Maison >base de données >tutoriel mysql >Comment trouver des cours non inscrits dans une application Rails à l'aide d'ActiveRecord ?

Comment trouver des cours non inscrits dans une application Rails à l'aide d'ActiveRecord ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-30 12:21:09283parcourir

How to Find Unenrolled Courses in a Rails Application Using ActiveRecord?

Récupération de cours non associés à une inscription d'étudiant

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn