Laravel 4 雄辩子查询

Laravel 4 雄辩子查询,laravel-4,eloquent,Laravel 4,Eloquent,我在学生表和仪器表之间有一个多对多的关系,一个学生在许多仪器上执行,一个仪器有许多学生。我有一个student_results表,它有一个复合主键student_id和Instrument_id,还有一个名为results的第三个字段 我写了一个查询,查找学生没有结果的所有仪器。我举的例子是id=121的学生。 子查询是 SELECT apparatus_id, strapparatus_name FROM apparatuss WHERE apparatus_id <> ALL(

我在学生表和仪器表之间有一个多对多的关系,一个学生在许多仪器上执行,一个仪器有许多学生。我有一个student_results表,它有一个复合主键student_id和Instrument_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 . ')';
我想用有说服力的Laravel 4.1来写这篇文章


非常感谢您的帮助。

假设您已经拥有了雄辩的模型和学习结果集,以下是一种方法:

Apparatus::whereNotIn(
    'apparatus_id',
    StudentResult::where('student_id', 121)->lists('apparatus_id')
)->get('apparatus_id', 'strapparatus_name');
或者,如果您的student_成绩表没有模型,您可以:

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

非常感谢您的回复Antonio。我确实有一个仪器模型,但我使用的是学生大学结果的数据透视表,因此我没有学生大学结果的模型。下面是我的解决方案。我将其放在route.php文件中,以便在实现之前测试代码$results2=DB::table'student_results'->其中'student_id',121->列出'instruments_id'$结果=仪器::whereNotIn'device_id',$results2->get;foreach$results为$tempresult{print.$tempresult->instrument_id.''.$tempresult->Straparatus_name;}谢谢Antonio。我试着用那个密码。谢谢在->获取“设备id”、“Straparatus_name”时出现了一个问题;。所以我必须简单地让它->得到;错误消息是:传递给Illumb\Database\Grammar::columnize的参数1必须是数组类型,字符串为给定的。再次感谢你,不;在列表的末尾,将“设备id”更改为数组应该可以使其按原样工作。而且没有;这是whereNotIn的第二个参数,聪明的安东尼奥!非常感谢你!你知道吗,@AntonioCarlosRibeiro?事实证明,在我的例子中,当我只想通过使用->get'id'从模型中获取id时;为了通过使用->其中的$ids将->更新[array]应用到另一个模型中,我得到了传递给Illumb\Database\Grammar::columnize的错误参数1必须是array,string给定的类型。所以我改变了获取列表的方式,现在它开始工作了!☺ .... 但是为什么呢?