我正试图在我的模型中使用数据库连接,但它没有连接,引发错误"找不到类"app\models\DB'。我已经创建了一个通用模型,由模块内的所有模型进行扩展,这意味着所有模型都扩展了CommonModel,我在CommonModel中遇到了这个错误。我已经阅读了yii关于数据库连接的文档;在谷歌上搜索了同样的内容,但我找不到任何解决方案。我的代码是:
models\CommonModel.php
namespace appmodels;
use Yii;
use yiibaseNotSupportedException;
use yiidbActiveRecord;
use yiihelpersSecurity;
use yiiwebIdentityInterface;
use yiidbQuery;
use appmodelsMailsettings;
use PDO as PDO;
class CommonModel extends yiidbActiveRecord{
protected $_db;
protected $_sql;
public function __construct()
{
$this->_db = DB::init(); // This line causing the error
$pdo = Timetrackdb::getPdoConnection();
}
----
----
}
config/db.hp&config/db2.php
return [
'class' => 'yiidbConnection',
'dsn' => 'mysql:host=localhost;dbname=my_db_name',
'username' => 'db_username',
'password' => 'db_password',
'charset' => 'utf8',
];
config/web.php
$db = require __DIR__ . '/db.php';
$db2 = require __DIR__ . '/db2.php';
$config = [
'id' => 'basic',
'basePath' => dirname(__DIR__),
'bootstrap' => ['log'],
'modules' => [
'my_module1' => [
'class' => 'appmodulesmy_module1'
],
'my_module2' => [
'class' => 'appmodulesmy_module2'
],
],
------
------
'db' => $db,
'db2' => $db2,
------
------
];
我创建了两个模块,其中一个模块使用相同类型的数据库连接运行良好,但另一个模块的数据库连接不正常。有人能告诉我这个代码出了什么问题吗?谢谢
Yii为您处理与数据库的连接,您不需要PDO
。如果您想让CommonModel
或派生的ActiveRecord类使用第二个数据库作为其数据存储,只需访问Yii::$app->db2
:
class CommonModel extends ActiveRecord {
public static function getDb()
{
// this will cause Yii to use the database configured as 'db2' in config/web.php
return Yii::$app->db2;
}
}
class Car extends CommonModel { }
// will try to insert a new row in `db2`.`car`
(new Car)->save();
如果要执行跨模式查询(config/db2.php
(,您可能还需要执行以下操作:
return [
// ...
// add and adjust the keys below
'tablePrefix' => '',
'schemaMap' => [
'mysql' => [
'class' => 'yiidbmysqlSchema',
'defaultSchema' => 'my_db_name',
],
],
];