将 SQL 查询转换为 Eloquent Laravel

Convert SQL query to Eloquent Laravel

我有一个 sql 查询:

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

如何将其转换为 Eloquent Laravel?

假设您已经建立关系,您可以为此使用 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();