Делай сегодня то что другие не хотят джаред лето


Делай сегодня то что другие не хотят джаред лето


X

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.

13 сообщений • Страница 1 из 1

Аватара пользователя Сообщения: Зарегистрирован: 2011.05.11, 11:28 Контактная информация: Привет народ кто подскажет как можно объединить запрос с двух разных БД в один перед скармливанием его ActiveDataProvider.
Суть такова есть 2 одинаковые модели 2 разных БД? надо объединить данные с двух разных БД

Код:

class HomeStoreAddresses extends BaseActiveRecord { public static function getDb() { return Yii::$app->home_db; } } class ClimaStoreAddresses extends BaseActiveRecord { public static function getDb() { return Yii::$app->clima_db; } } Про такой вариант знаю - но работает не так как надо - запрос идет к одной БД

Код:

$query1 = HomeStoreAddresses::find()->where([ 'type' => $type, 'region_id' => $this->region_id, ]); $query2 = ClimaStoreAddresses::find()->where([ 'type' => $type, 'region_id' => $this->region_id, ]); $query1->union($query2); $dataProvider = new ActiveDataProvider([ 'query' => $query1, 'pagination' => [ 'pageSize' => 10, ], ]); Такой вариант не красив и неправилен

Код:

$query1 = HomeStoreAddresses::find()->where([ 'type' => $type, 'region_id' => $this->region_id, ])->all(); $query2 = ClimaStoreAddresses::find()->where([ 'type' => $type, 'region_id' => $this->region_id, ])->all(); $result = array_merge($query1, $query2); $dataProvider = new ArrayDataProvider([ 'key' =>'id', 'allModels' => $result, 'pagination' => [ 'pageSize' => 10, ], ]);

Последний раз редактировалось 2017.03.13, 17:27, всего редактировалось 1 раз.

Кулинарные рецепты с фото на

Сообщения: Зарегистрирован: 2010.11.02, 23:40 Контактная информация: писал(а):

2017.03.13, 17:21

писал(а):

2017.03.13, 17:07

сделать mysql view и к нему модель Разные же базы
да по идее на одном сервере можно, хотя и union вроде как должен работать Аватара пользователя Сообщения: Зарегистрирован: 2011.05.11, 11:28 Контактная информация: писал(а):

2017.03.13, 18:13

а запрос какой генерируется? Открывает соединение с текущей БД
выборка данных -----
далее

Код:

(SELECT FROM `fp_store_addresses`) UNION ( SELECT FROM `fp_store_addresses` ) Opening DB connection: mysql:host=localhost;port=3306;dbname=forteprom-new
и все соединение идет только с одной из 2 БД
если наоборот соединить будет выборка но только с др БД

Код:

(SELECT FROM `fp_store_addresses`) UNION ( SELECT FROM `fp_store_addresses` ) Opening DB connection: mysql:host=localhost;port=3306;dbname=forteprom-clima

Кулинарные рецепты с фото на

Аватара пользователя Сообщения: Зарегистрирован: 2015.06.21, 16:21 Контактная информация: писал(а):

2017.03.13, 18:42

это из лога?
ну логично ж, что не работает, имена баз не устанавливаются, а вот почему - это вопрос Думаю, что не реализована в Yii подстановка имён баз в таких кейсах... Сообщения: Зарегистрирован: 2012.12.24, 12:49 писал(а):

2017.03.13, 17:43

писал(а):

2017.03.13, 17:21

писал(а):

2017.03.13, 17:07

сделать mysql view и к нему модель Разные же базы
да по идее на одном сервере можно, хотя и union вроде как должен работать Если на одном сервере и под одним пользователем то да Сообщения: Зарегистрирован: 2012.12.24, 12:49 писал(а):

2017.03.13, 19:15

писал(а):

2017.03.13, 18:42

это из лога?
ну логично ж, что не работает, имена баз не устанавливаются, а вот почему - это вопрос Думаю, что не реализована в Yii подстановка имён баз в таких кейсах... Если на одном сервере и под одним пользователем, то в tableName указать явно базу А если на разных, то вариант мерджить результаты уже

Создано на основе ® Forum Software © phpBB Limited

GZIP: Off

 


Источник: http://yiiframework.ru/forum/viewtopic.php?t=42798

X

Делай сегодня то что другие не хотят джаред лето

Делай сегодня то что другие не хотят джаред лето

Делай сегодня то что другие не хотят джаред лето

Делай сегодня то что другие не хотят джаред лето

Делай сегодня то что другие не хотят джаред лето

Делай сегодня то что другие не хотят джаред лето

Делай сегодня то что другие не хотят джаред лето

Рекомендуем почитать: