Обращение к разным БД через построить запросов

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
long399
Сообщения: 96
Зарегистрирован: 2019.08.13, 08:03
Откуда: г. Новосибирск

Обращение к разным БД через построить запросов

Сообщение long399 »

Доброго времени суток, товарищи.

Имеется подключение к двум разным базам данных:

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

// БД 1
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=yii2advanced',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
];

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

// БД 2
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=test',
    'username' => 'root',
    'password' => '',
    'charset' => 'utf8',
];
Подключены как компоненты приложения:

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

$db_1 = require __DIR__ . '/db_1.php';
$db_2 = require __DIR__ . '/db_2.php';
'db_1' => $db_1 ,
'db_2' => $db_2 ,
Знаю, что к ним можно обращаться следующим образом:

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

Yii::$app->db_1->createCommand('SELECT * FROM post')
            ->queryAll();
Yii::$app->db_2->createCommand()->insert('user', [
    'name' => 'Sam',
    'age' => 30,
])->execute();
Но мне хотелось бы узнать, можно ли выполнять запросы к этим двум базам данных используя построитель запросов \yii\db\Query ?

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

use \yii\db\Query;
...
$rows = (new Query())
    ->select(['id', 'email'])
    ->from('user')
    ->where(['last_name' => 'Smith'])
    ->limit(10)
    ->all();
Как в эту конструкцию можно вклинить указание определенной БД и можно ли ?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Обращение к разным БД через построить запросов

Сообщение urichalex »

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

$rows = (new Query())
    ->select(['id', 'email'])
    ->from('user')
    ->where(['last_name' => 'Smith'])
    ->limit(10)
    ->all(Yii::$app->db_2);
long399
Сообщения: 96
Зарегистрирован: 2019.08.13, 08:03
Откуда: г. Новосибирск

Re: Обращение к разным БД через построить запросов

Сообщение long399 »

спасибо, это помогло :!:
Ответить