将SQL查询转换为Eloquent Laravel

时间:2015-01-20 15:32:03

标签: php sql laravel eloquent

我有一个SQL查询:

select `id` from `users` 
where (
        select count(*) 
        from `user_event` as `uev` 
        where `uev`.`leader_id` = `users`.`id`
      ) > 1

如何将其转换为Eloquent Laravel?

1 个答案:

答案 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();