首页 文章

将SQL查询转换为Eloquent Laravel

提问于
浏览
0

我有一个SQL查询:

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

我如何将其转换为Eloquent Laravel?

1 回答

  • 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();
    

相关问题