【发布时间】:2015-01-20 15:32:02
【问题描述】:
我有一个 sql 查询:
select `id` from `users`
where (
select count(*)
from `user_event` as `uev`
where `uev`.`leader_id` = `users`.`id`
) > 1
如何将其转换为 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();
【讨论】:
has。你还有其他方法吗?
has..
QLSTATE[21000]: Cardinality violation: 1241 Operand should contain 1 column(s)