laravel eloquent 支持嵌套查询?

__陈亚荣
  • 430

Eloquent 是否支持嵌套查询

我想实现的是:

SELECT * FROM branch WHERE city_id IN (SELECT id FROM cities WHERE city_name = ?);

这样一个嵌套查询. 如果使用Eloquent 是否能够实现 ?

回复
阅读 4.5k
4 个回答
✓ 已被采纳

Branch::whereHas('cities', function($query){
    $query->where('city_name', 'chongqing');
})

对应的 SQL


select * from `branchs` where exists (select * from `cities` where `cities`.`city_name` = 'chongqing'

以前也用过这种,不过写起来挺长的,阅读性不好

支持, 只要把条件里面的value写成回调函数就可以. 如下:

$q = \DB::table('table')->whereIn('id', function ($q) {
    $q->from('table2');
    $q->where('name', 'nm');
});
var_dump($q->toSql());

用Model::belongstoMany 解决更加优雅 推荐

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏