Запрос содержит все включения из связаной таблицы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Запрос содержит все включения из связаной таблицы

Сообщение an.viktory@gmail.com »

как изменит запрос чтобы он работал не как или а как and
т.е. если в functions приходит 1,2 то мне нужны все записи у которых есть и 1 и 2

Код: Выделить всё

  if ($this->functions) $query->andWhere(['in', 'functions.id', $this->functions]);
  
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Запрос содержит все включения из связаной таблицы

Сообщение Loveorigami »

1. Сгруппируйте по functions.id AS counts и затем $query->andHaving(['counts' =>count($this->functions) ]);
2. или foreach ($this->functions as $key=>$value), и внутри цикла $query->andWhere([functions.id=>$value]);
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: Запрос содержит все включения из связаной таблицы

Сообщение an.viktory@gmail.com »

Спасибо работает. Тогда еще вопрос какое решение оптимальное в качестве производительности и нагрузки на Mysql?
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Запрос содержит все включения из связаной таблицы

Сообщение Loveorigami »

Смотря что нужно получить... Да и архитектура таблиц мне не известна.
Если все устраивает с запросом - посмотри в дебаге этот запрос. Его время и explain. Что меньше занимает по времени (перебирает записей для поиска), то и лучше.
Ответить