Я пытаюсь использовать множественное соединение с базой данных в структуре 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();
php_mysql
и php_pdo_mysql
. \yii\db\ActiveRecord
должен знать, с какой базой данных он работает Это код, который вы добавляете к модели, чтобы узнать о ее базе данных.
public static function getDb() { return Yii::$app->get('db1'); }