在 yii2 中找不到的类'yiiappmodelsDB'



我正试图在我的模型中使用数据库连接,但它没有连接,引发错误"找不到类"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',
],
],
];

相关内容

最新更新