Добрый день. Имею ситуацию, когда в GridView надо грузить данные из двух таблиц. Часовое курение мануалов дало мне возможность написать вот это:
public static function getLeadQuestionProvider($pageSize = 20)
{
$leadQuery = (new \yii\db\Query())
->select("id AS id, ".LeadQuestion::tableName().".city_id AS city_id, text AS text, link AS link, source AS source, created AS created")
->from(LeadQuestion::tableName())
->innerJoin(City::tableName(), City::tableName().'.city_id = '.LeadQuestion::tableName().'.city_id')
->where(['NOT IN', City::tableName().'.region_id', [3468, 4312, 3563]]);
$questionQuery = (new \yii\db\Query())
->select("CONCAT('0') AS id, ".Questions::tableName().".city_id AS city_id, text AS text, ".Address::tableName().".phone AS link, CONCAT('LD') AS source, create_date AS created")
->from(Questions::tableName())
->innerJoin(Address::tableName(), Address::tableName().'.id = '.Questions::tableName().'.address_id')
->innerJoin(City::tableName(), City::tableName().'.city_id = '.Questions::tableName().'.city_id')
->where(['NOT IN', City::tableName().'.region_id', [3468, 4312, 3563]]);
$query = (new \yii\db\Query())
->from(['scraper' => $leadQuery->union($questionQuery)]);
return new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => $pageSize
]
]);
}
Однако как я понял $query возвращает массив, а GridView ждёт объект и возможность дописывать этот запрос своими offset, limit и ордерБаями. В итоге не работает. :( ЧЯДНТ?