Size: a a a

2020 March 21

АВ

Алексей Веснин... in Laravel Pro
Алексей Веснин
Подскажите использование chunk() с where() будет корректно работать, если я порциями буду выбирать записи, например где статус 1, передавать их в очередь, а там уже статус будет меняться, например на 2? т.е мне нужно обойти много записей частями, передать их в очередь, а затем выбирать уже другие записи.
или все-же делать запрос в замыкании chunk()?
источник

AS

Artem Stepanenko in Laravel Pro
Ребьят, привет
Подскажите, как сгрупировать комментарии по рейтингу
таблица comments, столбики id, name, body, rating
rating типа decimal, может быть 6.3 например или 8.7
Сгрупировать нужно по группам: 0-2, 2-4, 4-6, 6-8, 8-10
Никак не получается, спасайте
источник

AR

Anton Rusakov in Laravel Pro
А тебе запрос постоянно гонять или разово?
источник

AR

Anton Rusakov in Laravel Pro
Если разово - длинный иф в селекте.
источник

AR

Anton Rusakov in Laravel Pro
Если постоянно - добей ещё одну колонку и туда сразу значение диапазона пиши
источник

SS

Stepan Stepanov in Laravel Pro
Artem Stepanenko
Ребьят, привет
Подскажите, как сгрупировать комментарии по рейтингу
таблица comments, столбики id, name, body, rating
rating типа decimal, может быть 6.3 например или 8.7
Сгрупировать нужно по группам: 0-2, 2-4, 4-6, 6-8, 8-10
Никак не получается, спасайте
источник

AS

Artem Stepanenko in Laravel Pro
Anton Rusakov
Если постоянно - добей ещё одну колонку и туда сразу значение диапазона пиши
постоянно, но там и так есть колонка общего рейтинга, еще делать 5 не очень хочется
источник

SS

Stepan Stepanov in Laravel Pro
в твоем случае
... foreach ($ranges as $index => $range)
{
 if ($comment->rating >= $range[0] && $comment->rating <= $range[1]) {
    //add to $grouppedResult[$index][] = $comment;
 }
}
источник

AR

Anton Rusakov in Laravel Pro
Artem Stepanenko
постоянно, но там и так есть колонка общего рейтинга, еще делать 5 не очень хочется
Денормализация  это норма для нагруженных проектов.
источник

AS

Artem Stepanenko in Laravel Pro
Stepan Stepanov
в твоем случае
... foreach ($ranges as $index => $range)
{
 if ($comment->rating >= $range[0] && $comment->rating <= $range[1]) {
    //add to $grouppedResult[$index][] = $comment;
 }
}
но так получается всегда надо выбирать все комментарии, не лучший вариант, особенно когда будет их много
источник

AR

Anton Rusakov in Laravel Pro
Group by коллекции это вообще ну такое :)
источник

SS

Stepan Stepanov in Laravel Pro
привести к массиву, хах ) 10х прирост скорости
источник

BL

Boris Lepikhin in Laravel Pro
Artem Stepanenko
Ребьят, привет
Подскажите, как сгрупировать комментарии по рейтингу
таблица comments, столбики id, name, body, rating
rating типа decimal, может быть 6.3 например или 8.7
Сгрупировать нужно по группам: 0-2, 2-4, 4-6, 6-8, 8-10
Никак не получается, спасайте
Приводи рейтинг к ближайшему четному и группируй по нему
источник

BL

Boris Lepikhin in Laravel Pro
round($rating / 2) * 2
источник

AS

Artem Stepanenko in Laravel Pro
Boris Lepikhin
round($rating / 2) * 2
Для такого опять же придется выбрать все комментарии
Если выбирать все, то есть варианты и получше
Цель как раз не выбирать все комментарии, а сделать это все 1 запросом
источник

BL

Boris Lepikhin in Laravel Pro
А что значит не выбирать все, а сделать 1 запросом?
источник

BL

Boris Lepikhin in Laravel Pro
Ты хочешь получить сгруппированную коллекцию sql-запросом?)
источник

SS

Stepan Stepanov in Laravel Pro
select t.range as [score range], count(*) as [number of occurences]
from (
 select case  
   when score between 0 and 9 then ' 0- 9'
   when score between 10 and 19 then '10-19'
   else '20-99' end as range
 from scores) t
group by t.range
источник

SS

Stepan Stepanov in Laravel Pro
источник

AS

Artem Stepanenko in Laravel Pro
Stepan Stepanov
select t.range as [score range], count(*) as [number of occurences]
from (
 select case  
   when score between 0 and 9 then ' 0- 9'
   when score between 10 and 19 then '10-19'
   else '20-99' end as range
 from scores) t
group by t.range
как раз смотрю это
источник