Size: a a a

2020 April 03

EG

Egor Gruzdev in Laravel Pro
Максим Кавецкий
Я так понимаю, что политики и гейты отличаются друг от друга, тем, что первые нуждаются в модели обязательно. Но вторые пишутся только в методе Бут а провайдере аус. Верно? Но это ведь не очень удобно писать их как роуты с функцией. Так, что можно передать контроллер с методом (политику с методом), но в таком случае гейт уже станет политикой и будет обладать её свойствами? - в частности наличием модели. А чем ещё отличаются гейты от политик? Например надо писать проверку для чего-то, у чего нет модели, тогда как это описать удобно? (Кроме как писать это в качестве роута (гейта) в Бут методе)
а по поводу писать как роуты, так можешь не задавать, а делать проверки в https://laravel.com/docs/7.x/authorization#intercepting-gate-checks
источник

a

alexey in Laravel Pro
Добрый день, помогите пжлста с query builder'ом
источник

a

alexey in Laravel Pro
есть такой запрос, мне надо сделать, чтобы заработал distinct
источник

a

alexey in Laravel Pro
сейчас он игнорируется и в count идут все значения, которые были найдены, включая дубли
источник

EG

Egor Gruzdev in Laravel Pro
alexey
есть такой запрос, мне надо сделать, чтобы заработал distinct
добавь select('users.id') и distinct вычистит дубли
источник

EG

Egor Gruzdev in Laravel Pro
distinct работает на результат, т.е. полные дубли всех выбраных значний, указание поля в distint бесполезно
источник

EG

Egor Gruzdev in Laravel Pro
источник

a

alexey in Laravel Pro
Egor Gruzdev
distinct работает на результат, т.е. полные дубли всех выбраных значний, указание поля в distint бесполезно
спасибо, правда какой-то баг случился с последующим count, он все равно выводил все значения, сделал просто получение всех значений с distinct, потом отдельно count
источник

EG

Egor Gruzdev in Laravel Pro
alexey
спасибо, правда какой-то баг случился с последующим count, он все равно выводил все значения, сделал просто получение всех значений с distinct, потом отдельно count
все верно count это агригированный запрос с единственным результатом, но ты можешь это все отправить в подзапрос, что вроде
select count(*) from (select ditinct userd.if from users) as results;
источник

a

alexey in Laravel Pro
да мне проще и понятнее отдельно, сначала всё получил, потом посчитал
источник

EG

Egor Gruzdev in Laravel Pro
alexey
да мне проще и понятнее отдельно, сначала всё получил, потом посчитал
получить да кока таких получить немного, а когда их станет 10к 100к 1кк пользователей
источник

a

alexey in Laravel Pro
там в среднем около 10-15к значений, вложенный будет намного быстрее работать?
источник

EG

Egor Gruzdev in Laravel Pro
alexey
там в среднем около 10-15к значений, вложенный будет намного быстрее работать?
да, т.к. нет передачи данных (а они я как понял тебе не нужны), только подсчет на стороне mysql, скорее всего есть и более элегантные и правильные sql запросы, но я в данный момент не подскажу.
источник

A

Alexander in Laravel Pro
alexey
там в среднем около 10-15к значений, вложенный будет намного быстрее работать?
прям оооочень намного
источник

a

alexey in Laravel Pro
понял, спасибо
источник

A

Alexander in Laravel Pro
alexey
сейчас он игнорируется и в count идут все значения, которые были найдены, включая дубли
источник

AB

Alex Berezhkovsky in Laravel Pro
alexey
спасибо, правда какой-то баг случился с последующим count, он все равно выводил все значения, сделал просто получение всех значений с distinct, потом отдельно count
в count() можно поле передать
источник

EG

Egor Gruzdev in Laravel Pro
alexey
понял, спасибо
а можешь вот так попробовать:
->count('DISTINCT users.id')
источник

EG

Egor Gruzdev in Laravel Pro
источник

EG

Egor Gruzdev in Laravel Pro
Egor Gruzdev
а можешь вот так попробовать:
->count('DISTINCT users.id')
должно сработать, я у себя raw sql проверил работает
источник