如何使用NOT IN laravel

时间:2017-03-27 23:21:42

标签: mysql laravel

如何将此mysql查询传递给laravel?

select examenes.id, examenes.name, materias.name
from  examen_grupo, grupo_user, materias, examenes
where examenes.id NOT IN (
    SELECT examen_id FROM examen_user WHERE user_id = 9
)
and grupo_user.grupo_id=examen_grupo.grupo_id 
and examen_grupo.examen_id=examenes.id 
and examenes.materia_id=materias.id 
and grupo_user.user_id=9;

1 个答案:

答案 0 :(得分:0)

试试这个:

DB::table('examenes')
    ->join('examen_grupo', 'examen_grupo.examen_id', '=', 'examenes.id')
    ->join('materias', 'materias.id', '=', 'examenes.materia_id')
    ->join('grupo_user', 'grupo_user.grupo_id', '=', 'examen_grupo.grupo_id')
    ->where('grupo_user.user_id', 9)
    ->whereNotIn(function ($query) {
        $query->from('examen_user')
              ->where('examen_user.user_id', 9)
              ->pluck('examen_user.examen_id');
    })
    ->get(['examenes.id', 'examenes.name', 'materias.name']);