雄辩的子查询

时间:2014-03-09 06:23:14

标签: laravel-4 eloquent

学生表设备表之间存在多对多的关系(学生在许多设备上执行,设备有很多学生)。我有一个 student_results表,它有一个复合主键( student_id apparatus_id )和一个名为results的第三个字段。

我写了一个查询,找到学生有结果的所有设备。我给出的例子是id = 121的学生。 子查询是。

SELECT apparatus_id, strapparatus_name FROM apparatuss 
WHERE apparatus_id <> ALL(SELECT apparatus_id FROM student_results 
WHERE student_id =' . 121 . ')';

我想用Eloquent(Laravel 4.1)写这个。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

假设您已经设置了您的Eloquent模型ApparatusStudentResult,这是一种方式:

Apparatus::whereNotIn(
    'apparatus_id',
    StudentResult::where('student_id', 121)->lists('apparatus_id')
)->get('apparatus_id', 'strapparatus_name');

或者,如果您没有student_results表的模型,您可以:

Apparatus::whereNotIn(
    'apparatus_id',
    DB::table('student_results')->where('student_id', 121)->lists('apparatus_id'); 
)->get(array('apparatus_id', 'strapparatus_name'));