Соединение нескольких баз данных на yii2

Я пытаюсь использовать множественное соединение с базой данных в структуре yii2. В моем файле db.php внутри папки config у меня есть эта часть кода:

return [ 'class' => 'yii\db\Connection', 'components' => [ 'db1' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=new', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ], 'db2' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=old', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ], ], ]; 

В моем test.php под папкой моделей у меня это ниже …

 namespace app\models; use Yii; use yii\base\Model; use yii\db\Query; class GetAds extends Model { public function ads() { $test = Yii::$app->db1->createCommand((new \yii\db\Query)->select('*')->from('members'))->queryAll(); } 

когда я пытаюсь получить доступ, я получаю это сообщение об ошибке «Получение неизвестного свойства: yii \ web \ Application :: db1»

Как решить эту проблему? Я действительно следовал этому руководству Несколько соединений с базой данных и Yii 2.0

Где я сделал ошибку?

Хуже всего то, что я решил использовать только одну базу данных … и на моей модели я использую этот код.

  namespace app\models; use Yii; use yii\base\Model; use yii\db\ActiveRecord; use yii\db\Query; class GetAds extends ActiveRecord { public static function tableName() { return 'ads_page'; } public static function ads() { $count=(new \yii\db\Query)->from('ads_page')->count('*'); } } 

И я получаю эту ошибку

 Database Exception – yii\db\Exception could not find driver ↵ Caused by: PDOException could not find driver 

Почему так сильно используется yii2? Я следую всем отсюда http://www.yiiframework.com/doc-2.0/guide-db-dao.html

пожалуйста помоги

Я решил эту проблему. Это может помочь другим, кому это нужно.

В config / web.php я добавил эту строку « 'db2' => require(__DIR__ . '/db2.php'), «просто под этим утверждением» 'db' => require(__DIR__ . '/db.php'), "(без кавычек)

и создал новый файл db2.php в папке config, используя те же коды, что и в db.php:

 <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=test2', 'username' => 'root', 'password' => 'password', 'charset' => 'utf8', ]; 

и вызвать первую базу данных. Я использую это:

 $row = Yii::$app->db->createCommand("SELECT * FROM test")->queryOne(); 

Чтобы запросить таблицу из второй базы данных, я использую следующее:

 $row = Yii::$app->db2->createCommand("SELECT * FROM test2")->queryOne(); 
  1. Убедитесь, что установлены расширения php_mysql и php_pdo_mysql .
  2. Класс \yii\db\ActiveRecord должен знать, с какой базой данных он работает

Это код, который вы добавляете к модели, чтобы узнать о ее базе данных.

 public static function getDb() { return Yii::$app->get('db1'); }