Найдено 68 результатов
- 2017.09.07, 15:03
- Форум: Общие вопросы (Yii 2.x)
- Тема: Наследование AR (class table inheritance)
- Ответы: 1
- Просмотры: 1174
Re: Наследование AR (class table inheritance)
Неужели нет решения? Или описал непонятно?
- 2017.09.07, 00:29
- Форум: Общие вопросы (Yii 2.x)
- Тема: Наследование AR (class table inheritance)
- Ответы: 1
- Просмотры: 1174
Наследование AR (class table inheritance)
Делаю модульную структуру, где другие люди могут расширять функционал. Есть базовый abstract класс BaseItem со своими полями, правилами валидации, лейблами. От него могут наследоваться (через extends) неизвестное кол-во моделей, то есть BaseItem ничего не знает о дочерних классах. Каждому дочернему ...
- 2017.08.30, 15:12
- Форум: Общие вопросы (Yii 2.x)
- Тема: events для модульной структуры
- Ответы: 0
- Просмотры: 911
events для модульной структуры
Всем привет. Делаю что то вроде системы плагинов или модульной системы, где можно расширять функционал добавляя эти самые модули. Решил реализовывать все это на yii2 events, а модули хранить как модули yii2. Появились вопросы: - Как правильно сделать: модуль1 кидает ивент, модуль2 и модуль3 подписыв...
- 2017.08.07, 01:36
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
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...
- 2017.08.05, 22:24
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
Re: Медленный COUNT(*) на большем количестве записей с JOINами
Это вообще не тот запрос. Какой ещё "name", "slug"? Из того, что вы привели сейчас, в принципе не могу сформироваться тот запрос, который в первом посте. Ну или тот запрос для вас уже не актуален, тогда скажите какой SQL код генерируется для этого запроса. И заодно, что там в &q...
- 2017.08.03, 17:22
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
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, ]); если убр...
- 2017.08.03, 15:37
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
Re: Медленный COUNT(*) на большем количестве записей с JOINами
Зачем вложенный запрос? Делайте сразу select count(product.id). но тогда нельзя будет фильтровать по параметрам Если вы измените запрос, в котором COUNT, у вас что-то станет "нельзя"? С чего вы это взяли? хм, наверно неправильно вас понял. Этот запрос генерирует dataprovider по умолчанию....
- 2017.08.03, 00:12
- Форум: Общие вопросы (Yii 2.x)
- Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
- Ответы: 6
- Просмотры: 2741
Re: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
Тема закрыта. Сделал на двух innerJoin(). Спасибо @Nerf
- 2017.08.02, 23:46
- Форум: Общие вопросы (Yii 2.x)
- Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
- Ответы: 6
- Просмотры: 2741
Re: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
Будет сложно и долго. Рассмотрите вариант с использованием поискового движка. Код писать лень, но если все же силами текущей БД, то сделайте метод который добавляет в ActiveQuery нужные части запроса. $alias = 'f' . ++$this->aliasCounter; $query->innerJoinWith(['parameterValues ' . $alias => functi...
- 2017.08.02, 22:16
- Форум: Общие вопросы (Yii 2.x)
- Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
- Ответы: 6
- Просмотры: 2741
Re: Выбрать товары с определенными параметрами одновременно (фильтр)
У вас EAV... Чтобы фильтровать по n атрибутам, вам нужно n раз для каждого атрибута сделать join (лучше inner), чтобы привести к "линейному" виду. https://www.slideshare.net/billkarwin/sql-antipatterns-strike-back/24-EntityAttributeValue_Difcult_to_reconstruct_a По аналогии с этим, только...
- 2017.08.02, 17:39
- Форум: Общие вопросы (Yii 2.x)
- Тема: Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
- Ответы: 6
- Просмотры: 2741
Выбрать товары с несколькими параметрами одновременно (фильтр EAV)
Здравствуйте. Нужно выбрать товары, где, например, параметр "Цвет" = "Красный" или "Зеленый" (WHERE ... IN (...)) и "Размер" = "24" или "45" (тоже IN). Сейчас получилось сделать только выборку по отдельным параметрам, то есть если указать е...
- 2017.08.02, 16:57
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
- 2017.08.02, 13:37
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
Re: Медленный COUNT(*) на большем количестве записей с JOINами
думаю, можно. Но ведь тогда количество может быть не актуальным (а нужно ли актуальное количество)? Под каждую галочку фильтра он будет создавать свой кеш?
- 2017.08.02, 13:17
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
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...
- 2017.08.02, 12:48
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
- 2017.08.02, 02:35
- Форум: Общие вопросы (Yii 2.x)
- Тема: Медленный COUNT(*) на большем количестве записей и GROUP BY
- Ответы: 16
- Просмотры: 4971
Медленный 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 - начинаются ...
- 2017.06.29, 13:01
- Форум: Общие вопросы (Yii 2.x)
- Тема: Несколько WHERE ... AND ... для многие-ко-многим
- Ответы: 6
- Просмотры: 2342
- 2017.06.29, 02:38
- Форум: Общие вопросы (Yii 2.x)
- Тема: Несколько WHERE ... AND ... для многие-ко-многим
- Ответы: 6
- Просмотры: 2342
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) ) ) спасибо, так работает. Возможно ли выбирать товары, которые...
- 2017.06.29, 01:53
- Форум: Общие вопросы (Yii 2.x)
- Тема: Несколько WHERE ... AND ... для многие-ко-многим
- Ответы: 6
- Просмотры: 2342
Несколько 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...
- 2017.04.20, 20:30
- Форум: Общие вопросы (Yii 2.x)
- Тема: Разделение на ActiveRecord и Model
- Ответы: 8
- Просмотры: 3632
Re: Разделение на ActiveRecord и Model
Спасибо за ответы, намного понятнее стало с примерами