Как объединить два Query ? (не union)

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Как объединить два Query ? (не union)

Сообщение Stepan Selyuk »

Не нашел функции mergeWith($otherQuery), чтобы объединить параметры (уточнить запрос). В слайдах об этом было, а вот в коде не нашел.
Имеется ввиду следующее:

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

Post::find()->where(['active'=>1])->mergeWith($someQuery)->all();
 
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Как объединить два Query ? (не union)

Сообщение Stepan Selyuk »

Удосужились бы прочитать сначала. Это объединение с другими relations модели.
A list of relations that this query should be joined with
Сначала невидимое, затем видимое. И так у всех программистов :)
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Как объединить два Query ? (не union)

Сообщение lynicidn »

Stepan Selyuk писал(а):
Удосужились бы прочитать сначала. Это объединение с другими relations модели.
A list of relations that this query should be joined with
а я смотрю вы читать умеете, а вопросы все равно задаете ;)
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как объединить два Query ? (не union)

Сообщение zelenin »

заметил, что в теме поста "не union". А как вы тогда собираетесь соединять два запроса, если для этого есть только union?
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Как объединить два Query ? (не union)

Сообщение Stepan Selyuk »

Я хочу не запросы объединять (SQL), а объекты Query, как это было с Criteria в Yii-1. Там было $criteria->mergeWith($otherCriteria). Именно этого я не нашел в Yii-2.

http://www.slideshare.net/samdark/alexa ... -whats-new# страница 28. "Can merge two finders".
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Как объединить два Query ? (не union)

Сообщение Stepan Selyuk »

Александр (SamDark), что скажете насчет этого метода?
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
Insolita
Сообщения: 788
Зарегистрирован: 2011.06.06, 01:39
Контактная информация:

Re: Как объединить два Query ? (не union)

Сообщение Insolita »

ну полного merge вроде как нету, а так вполне можно

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

 $q1=(new \yii\db\Query())->select(['io','surname'])->from('{{%workers}}')->where('worker_id>3');
        $q2=(new \yii\db\Query())->select(['surname','profess'])->from('{{%workers}}')->where('active=1');

     $q3=Workers::find()
          ->select($q1->select)
         ->addSelect($q2->select)
         ->from($q1->from)->
          where($q1->where)->orWhere($q2->where)
          ->all();
 
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Как объединить два Query ? (не union)

Сообщение samdark »

Полный мёрж выпилили.
Аватара пользователя
Stepan Selyuk
Сообщения: 198
Зарегистрирован: 2010.02.03, 05:51
Откуда: Cyprus, Limassol
Контактная информация:

Re: Как объединить два Query ? (не union)

Сообщение Stepan Selyuk »

Он хорошо помогал при работе с различного рода dataTables, то есть экшен формирует Query согласно его настройкам (сортировка, страница, лимит, фильтры) и потом этот Query применяем к основной выборке. Придется руками значит писать)
Сначала невидимое, затем видимое. И так у всех программистов :)
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Как объединить два Query ? (не union)

Сообщение maleks »

Кто нибудь на практике такую вещь делал/встречал ?

В примере от Insolita походу про параметры не учтено, может еще что, сразу невидное
Ответить