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
Libérer: 2024-12-30 12:21:09
original
288 Les gens l'ont consulté

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
Copier après la connexion

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)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal