雄辩在哪里不查询?

时间:2015-04-15 06:37:07

标签: laravel-4 eloquent

我试图用eloquent构建以下sql查询。该查询为我提供了table_a中所有记录,这些记录位于id列表中,不会出现在table_b中。

select * from table_a 
where id in (1,2,3)
   and id not in 
      (select tablea_id from table_b 
       where tablea_id in (1,2,3))

那我该如何做到雄辩呢?我想避免使用原始查询。

//does not work
TableA::whereIn('id',$ids)
   ->whereNotIn('id', TableB::select('tabla_id')->whereIn($ids));

1 个答案:

答案 0 :(得分:10)

要运行子查询,您必须传递一个闭包:

TableA::whereIn('id',$ids)
      ->whereNotIn('id', function($q){
          $q->select('tabla_id')
            ->from('tableb');
            // more where conditions
      })
      ->get();