Найдено 68 результатов

CyanoFresh
2017.09.07, 15:03
Форум: Общие вопросы (Yii 2.x)
Тема: Наследование AR (class table inheritance)
Ответы: 1
Просмотры: 530

Re: Наследование AR (class table inheritance)

Неужели нет решения? Или описал непонятно?
CyanoFresh
2017.09.07, 00:29
Форум: Общие вопросы (Yii 2.x)
Тема: Наследование AR (class table inheritance)
Ответы: 1
Просмотры: 530

Наследование AR (class table inheritance)

Делаю модульную структуру, где другие люди могут расширять функционал. Есть базовый abstract класс BaseItem со своими полями, правилами валидации, лейблами. От него могут наследоваться (через extends) неизвестное кол-во моделей, то есть BaseItem ничего не знает о дочерних классах. Каждому дочернему ...
CyanoFresh
2017.08.30, 15:12
Форум: Общие вопросы (Yii 2.x)
Тема: events для модульной структуры
Ответы: 0
Просмотры: 415

events для модульной структуры

Всем привет. Делаю что то вроде системы плагинов или модульной системы, где можно расширять функционал добавляя эти самые модули. Решил реализовывать все это на yii2 events, а модули хранить как модули yii2. Появились вопросы: - Как правильно сделать: модуль1 кидает ивент, модуль2 и модуль3 подписыв...
CyanoFresh
2017.08.07, 01:36
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

Тут не обман, тут путаница. Не может из такого запроса ->getActiveProducts() ->select(['product.id', 'product.price']) ->with([ 'productDescription' => function (ActiveQuery $query) { $query->select(['name', 'slug', 'product_id']); }, ]) ->groupBy('product.id'); Генерироваться такой SQL https://i.g...
CyanoFresh
2017.08.05, 22:24
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

Это вообще не тот запрос. Какой ещё "name", "slug"? Из того, что вы привели сейчас, в принципе не могу сформироваться тот запрос, который в первом посте. Ну или тот запрос для вас уже не актуален, тогда скажите какой SQL код генерируется для этого запроса. И заодно, что там в "getActiveProducts" и ...
CyanoFresh
2017.08.03, 17:22
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

$query = $category ->getActiveProducts() ->select(['product.id', 'product.price']) ->with([ 'productDescription' => function (ActiveQuery $query) { $query->select(['name', 'slug', 'product_id']); }, ]) ->groupBy('product.id'); $dataProvider = new ActiveDataProvider([ 'query' => $query, ]); если убр...
CyanoFresh
2017.08.03, 15:37
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

Зачем вложенный запрос? Делайте сразу select count(product.id). но тогда нельзя будет фильтровать по параметрам Если вы измените запрос, в котором COUNT, у вас что-то станет "нельзя"? С чего вы это взяли? хм, наверно неправильно вас понял. Этот запрос генерирует dataprovider по умолчанию. Если сдел...
CyanoFresh
2017.08.02, 23:46
Форум: Общие вопросы (Yii 2.x)
Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
Ответы: 6
Просмотры: 1109

Re: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)

Будет сложно и долго. Рассмотрите вариант с использованием поискового движка. Код писать лень, но если все же силами текущей БД, то сделайте метод который добавляет в ActiveQuery нужные части запроса. $alias = 'f' . ++$this->aliasCounter; $query->innerJoinWith(['parameterValues ' . $alias => functi...
CyanoFresh
2017.08.02, 22:16
Форум: Общие вопросы (Yii 2.x)
Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
Ответы: 6
Просмотры: 1109

Re: Выбрать товары с определенными параметрами одновременно (фильтр)

У вас EAV... Чтобы фильтровать по n атрибутам, вам нужно n раз для каждого атрибута сделать join (лучше inner), чтобы привести к "линейному" виду. https://www.slideshare.net/billkarwin/sql-antipatterns-strike-back/24-EntityAttributeValue_Difcult_to_reconstruct_a По аналогии с этим, только все услож...
CyanoFresh
2017.08.02, 17:39
Форум: Общие вопросы (Yii 2.x)
Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
Ответы: 6
Просмотры: 1109

Выбрать товары с несколькими параметрами одновременно (фильтр EAV)

Здравствуйте. Нужно выбрать товары, где, например, параметр "Цвет" = "Красный" или "Зеленый" (WHERE ... IN (...)) и "Размер" = "24" или "45" (тоже IN). Сейчас получилось сделать только выборку по отдельным параметрам, то есть если указать еще один параметр, то все товары с ним добавляются в выборку,...
CyanoFresh
2017.08.02, 16:57
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

ElisDN писал(а):
2017.08.02, 13:50
Подключите ElasticSearch и денормализируйте всё в него.
спасибо, наверное так и сделаю, если больше ничего не получиться
CyanoFresh
2017.08.02, 13:37
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

someweb писал(а):
2017.08.02, 13:31
Закэшировать нельзя? У меня похожей сложности запрос на таблицу в 50 000 записей 700 мс после сброса кэша (core i5 2.9 обычный HDD)
думаю, можно. Но ведь тогда количество может быть не актуальным (а нужно ли актуальное количество)? Под каждую галочку фильтра он будет создавать свой кеш?
CyanoFresh
2017.08.02, 13:17
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

Зачем вложенный запрос? Делайте сразу select count(product.id). может можно как то проверять, есть ли у товара параметр без JOIN? Сейчас такой запрос: SELECT `product`.`id`, `product`.`price` FROM `product` LEFT JOIN `product_parameter_value` ON `product`.`id` = `product_parameter_value`.`product_i...
CyanoFresh
2017.08.02, 12:48
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Re: Медленный COUNT(*) на большем количестве записей с JOINами

Nex-Otaku писал(а):
2017.08.02, 10:20
Зачем вложенный запрос? Делайте сразу select count(product.id).
но тогда нельзя будет фильтровать по параметрам
CyanoFresh
2017.08.02, 02:35
Форум: Общие вопросы (Yii 2.x)
Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
Ответы: 16
Просмотры: 2053

Медленный COUNT(*) на большем количестве записей и GROUP BY

Всем привет. Есть такая структура https://i.gyazo.com/1b3fc6a394ac192298baf0dc15aa2b03.png запросы: https://image.prntscr.com/image/DnGZ_tiUSKWAbOhyVoi4QA.jpeg Индексы: https://image.prntscr.com/image/fsI_34CmQmy9xeszDqLZzQ.jpeg когда товаров и данных мало - все летает, а когда ~200000 - начинаются ...
CyanoFresh
2017.06.29, 13:01
Форум: Общие вопросы (Yii 2.x)
Тема: Несколько WHERE ... AND ... для многие-ко-многим
Ответы: 6
Просмотры: 973

Re: Несколько WHERE ... AND ... для многие-ко-многим

Dima1987 писал(а):
2017.06.29, 09:38
GROUP BY
можно пример запроса?
CyanoFresh
2017.06.29, 02:38
Форум: Общие вопросы (Yii 2.x)
Тема: Несколько WHERE ... AND ... для многие-ко-многим
Ответы: 6
Просмотры: 973

Re: Несколько WHERE ... AND ... для многие-ко-многим

потому что как он вам одновременно будет и id 4 и id 9 WHERE (`product`.`status`=10) AND ( ( (`parameter_value`.`id`=4) AND (`parameter_value`.`parameter_id`=2) ) OR ( (`parameter_value`.`id`=9) AND (`parameter_value`.`parameter_id`=3) ) ) спасибо, так работает. Возможно ли выбирать товары, которые...
CyanoFresh
2017.06.29, 01:53
Форум: Общие вопросы (Yii 2.x)
Тема: Несколько WHERE ... AND ... для многие-ко-многим
Ответы: 6
Просмотры: 973

Несколько WHERE ... AND ... для многие-ко-многим

Здравствуйте. Есть такая структура БД: https://image.prntscr.com/image/gM_Z_OQlTEGiSF4ekmiu6A.jpeg Получилось сделать выборку с одним WHERE AND: SELECT `product`.* FROM `product` LEFT JOIN `product_parameter_value` ON `product`.`id` = `product_parameter_value`.`product_id` LEFT JOIN `parameter_value...
CyanoFresh
2017.04.20, 20:30
Форум: Общие вопросы (Yii 2.x)
Тема: Разделение на ActiveRecord и Model
Ответы: 8
Просмотры: 1888

Re: Разделение на ActiveRecord и Model

Спасибо за ответы, намного понятнее стало с примерами