Size: a a a

Laravel для начинающих

2020 March 13

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
message: SQLSTATE[42703]: Undefined column: 7 ERROR:  column "views_count" does not exist
LINE 1: select sum("views_count") as aggregate from "StatVisitor" wh...
                  ^ (SQL: select sum("views_count") as aggregate from "StatVisitor" where "location"::text LIKE %campaign=3611272% and "created_at" between 2020-03-13 and 2020-03-14)
Ну тогда либо сырой запрос, либо через коллекцию.

->pluck('views_count)->sum()
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
Visitor::where('location', 'LIKE', "%campaign=".$value->id_yandex."%")->whereBetween('created_at', [$from, $to])->withCount('views')->sum('views_count');
Visitor::where('location', 'LIKE', "%campaign=".$value->id_yandex."%")->whereBetween('created_at', [$from, $to])->withCount('views')->pluck('views_count')->sum();
источник

СБ

Сергей Байков... in Laravel для начинающих
Sergey Gerasimov
Ну тогда либо сырой запрос, либо через коллекцию.

->pluck('views_count)->sum()
что такое вообще views_count?
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
message: SQLSTATE[42703]: Undefined column: 7 ERROR:  column "views_count" does not exist
LINE 1: select sum("views_count") as aggregate from "StatVisitor" wh...
                  ^ (SQL: select sum("views_count") as aggregate from "StatVisitor" where "location"::text LIKE %campaign=3611272% and "created_at" between 2020-03-13 and 2020-03-14)
Вообще очень странно, он количество должен был в подзапросе подсчитать
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
что такое вообще views_count?
Алиас после вызова функции withCount на отношение views
источник

СБ

Сергей Байков... in Laravel для начинающих
Sergey Gerasimov
Visitor::where('location', 'LIKE', "%campaign=".$value->id_yandex."%")->whereBetween('created_at', [$from, $to])->withCount('views')->pluck('views_count')->sum();
вот, теперь правильно работает
источник

СБ

Сергей Байков... in Laravel для начинающих
Сергей, спасибо Вам
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
вот, теперь правильно работает
Не сказал бы 😏
источник

СБ

Сергей Байков... in Laravel для начинающих
А если посмотреть на запрос со стороны его оптимизации, он криво у меня сделан? Просто выборка Посетителей будет происходить среди сотни тысяч, а просмотров порядка 3-4 миллионов. Наверное большая нагрузка будет на бд?
источник

СБ

Сергей Байков... in Laravel для начинающих
мне кажется, я изначально не правильно бд спроектировал, надо было создавать поле campaign и писать туда уже id. А не искать через LIKE его
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
А если посмотреть на запрос со стороны его оптимизации, он криво у меня сделан? Просто выборка Посетителей будет происходить среди сотни тысяч, а просмотров порядка 3-4 миллионов. Наверное большая нагрузка будет на бд?
Ну у вас лайк двусторонний, он не индексируется
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
мне кажется, я изначально не правильно бд спроектировал, надо было создавать поле campaign и писать туда уже id. А не искать через LIKE его
А что там?
источник

SG

Sergey Gerasimov in Laravel для начинающих
Если jsonb, то есть свои особенности
источник

SG

Sergey Gerasimov in Laravel для начинающих
И какая вообще бд
источник

СБ

Сергей Байков... in Laravel для начинающих
Sergey Gerasimov
А что там?
вообще в location хранится url по которому пришёл пользователь. Там хвостов куча, особенно, если он из директа пришёл.
источник

СБ

Сергей Байков... in Laravel для начинающих
Sergey Gerasimov
И какая вообще бд
postgre
источник

SG

Sergey Gerasimov in Laravel для начинающих
Сергей Байков
вообще в location хранится url по которому пришёл пользователь. Там хвостов куча, особенно, если он из директа пришёл.
Ну можно url через parse_url прогонять и query через parse_str, и создать доп поле, например url_params
источник

SG

Sergey Gerasimov in Laravel для начинающих
И писать в jsonb
источник

СБ

Сергей Байков... in Laravel для начинающих
Sergey Gerasimov
Ну можно url через parse_url прогонять и query через parse_str, и создать доп поле, например url_params
ну вот у меня есть такой вариант, да
источник

SG

Sergey Gerasimov in Laravel для начинающих
И индекс на них
источник