我有一个SQL查询:
select `id` from `users`
where (
select count(*)
from `user_event` as `uev`
where `uev`.`leader_id` = `users`.`id`
) > 1
如何将其转换为Eloquent Laravel?
答案 0 :(得分:3)
假设您已设置关系,可以使用has()
方法:
$users = User::select('id')->has('events', '>', 1)->get();
如果您想要一组用户ID(因为您只选择了ID),您还可以使用lists()
:
$ids = User::has('events', '>', 1)->lists('id');
既然你问过,这将是一种替代方法(不测试)
User::where(DB::raw('1'), '<', function($q){
$q->from('user_event')
->where('user_event.leader_id', 'users.id');
})->get();