2つのCourse
とUser
モデルの間にManyToMany関係があります。ここでピボットラベリングメソッドと "in"演算子
そして、このような余分な列があるcourse_user
という名前のピボットテーブルがあります。
course_id
user_id
status
score
status
列がコース内のユーザーのレジスタの状態を示して整数値を保持します。
特定のユーザーのすべてのコースを特定のcourse_id
にフェッチし、そのステータスに含まれている配列値が少なくとも1つ含まれています。
$user->courses()
->where('course_user.course_id', $course->course_id)
->wherePivot('status', 'not in', [1, 3, 10])
->count()
しかし、それは動作しませんし、私が期待するものは戻らない。そのために
は、私がこれを書きました。
はさえ、私は正常に動作しないwherePivot方法を示すとnot in
SQL演算子を無視して、上記のコードから生成されたSQLを参照してみてください。 sql以下に返される:
"select * from `courses` inner join `course_user` on `courses`.`course_id` = `course_user`.`course_id` where `course_user`.`user_id` = ? and `course_user`.`course_id` = ? and `course_user`.`status` != ? and `courses`.`deleted_at` is null"
問題とはどのように解決できますか?