Написание предложения where с использованием count в подзапросе в laravel - PullRequest
0 голосов
/ 04 мая 2018

Я хочу написать этот запрос, используя eloquent в Laravel.

select * 
from tbl_lawyers as l
where ( select count(*) 
        from cooprations as c
        where c.fk_lawyer_id = l.lawyer_id
        and c.fk_coopration_id in ($request->cooprations))>= count($request->cooprations);

Как мне это написать?

Я написал это с >=, но это не работает.

$query->join('tbl_lawyer_cooperation', function ($s) use ($request) {
    $s->on('tbl_lawyer_cooperation.fk_lawyer_id', '=', 'vw_lawyers.lawyer_id')
        ->where(function ($d) use ($request) {
            $d->select('count')
                ->whereIn('tbl_lawyer_cooperation.fk_cooperation_id', $request->cooprations);
        },'>=',count($request->cooprations));
});

1 Ответ

0 голосов
/ 04 мая 2018

Попробуйте это:

->where(DB::raw(count($request->cooprations)), '<=', function ($d) use ($request) {
    $d->selectRaw('count(*)')
        ->from('cooprations')
        ->whereIn('tbl_lawyer_cooperation.fk_cooperation_id', $request->cooprations);
});

Необработанное выражение не идеально, но оно работает. Я не уверен, что есть лучший способ сделать это.

...