ホームページ >データベース >mysql チュートリアル >ActiveRecord を使用して Rails アプリケーションで未登録のコースを検索する方法
質問:
次のモデルで Rails アプリケーションを使用する: Student 、Course、および StudentEnrollment に関連付けられていない Courses テーブル内のコースのリストをクエリするにはどうすればよいですか? StudentEnrollment テーブルを介して学生を取得しますか?
解決策:
これを実現するには、ActiveRecord の JOIN 操作を利用できます。ただし、テーブル名を引数として受け入れる joins() メソッドとは異なり、生の SQL 文字列を渡してカスタム結合条件を指定することもできます。
特定のクエリの場合:
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
Rails では、次のようにこのクエリを実行できます:
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)
このクエリは、指定された学生に関連付けられていないすべてのコースを取得しますStudent_enrollments テーブルに追加すると同時に、アクティブなコースのみが含まれるようにします。
以上がActiveRecord を使用して Rails アプリケーションで未登録のコースを検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。