管理和站点面板的yii2更改数据库

管理和站点面板的yii2更改数据库,yii2,Yii2,我有以下配置文件 common/main-local.php return [ 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=aishwariya_basic2', 'username' => 'root', 'password' => '

我有以下配置文件

common/main-local.php

 return [
'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=aishwariya_basic2',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
    // 'db' => $db,
    'db2' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=aishwariya_basic',
        'username' => 'root',
        'password' => '',
        'charset' => 'utf8',
    ],
    'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
        ],
            // autoloading model and component classes
    'import'=> [
        'class' => 'yii2-widget-linkpager',
        'application.extensions.MyLinkPager.*',

],
  ],
];
管理员控制器

namespace frontend\controllers;

use Yii;
use frontend\models\Site_login;
use frontend\models\EntryForm_model;
use frontend\models\Asal_page_model;
use frontend\models\Interest_page_model;
use frontend\models\Return_page_model;
use frontend\models\Daily_report_model;
use frontend\models\Changepassword;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use yii\helpers\ArrayHelper;
use yii\db\Query;

class AdminController extends Controller
{

    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'access' =>  [
                'class' => AccessControl::className(),
                'only' => ['index', 'signup'],
                'rules' => [
                    [
                        'actions' => ['index'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                    [
                        'actions' => ['settings','changepassword'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],





            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],

        ];
    }

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

#####Action index code starts here 

public function actionIndex()
    {

        $this->layout = 'admin';
        $my2DbConn = Yii::$app->db;

        $model = new Site_login();


        if ($model->load(Yii::$app->request->post()) ) 
            {

                if ($model->validate()) {
            $url = Yii::$app->getUrlManager()->getBaseUrl()."/admin/search";
              return $this->redirect($url);
                                        } 
           }
        return $this->render('index', ['model' => $model]);
    }
public function actionInitial()
{
    $this->layout = 'site'; 
    $my2DbConn = Yii::$app->db2;        
    $model=new Initial_model();
    if ($model->load(Yii::$app->request->post()))
    {
    }
return $this->render('initial',['model'=>$model]);
    }
现场控制员

namespace frontend\controllers;

use Yii;
use frontend\models\Site_login;
use frontend\models\EntryForm_model;
use frontend\models\Asal_page_model;
use frontend\models\Interest_page_model;
use frontend\models\Return_page_model;
use frontend\models\Daily_report_model;
use frontend\models\Changepassword;
use yii\base\InvalidParamException;
use yii\web\BadRequestHttpException;
use yii\web\Controller;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use yii\helpers\ArrayHelper;
use yii\db\Query;

class AdminController extends Controller
{

    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'access' =>  [
                'class' => AccessControl::className(),
                'only' => ['index', 'signup'],
                'rules' => [
                    [
                        'actions' => ['index'],
                        'allow' => true,
                        'roles' => ['?'],
                    ],
                    [
                        'actions' => ['settings','changepassword'],
                        'allow' => true,
                        'roles' => ['@'],
                    ],
                ],
            ],





            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => ['post'],
                ],
            ],

        ];
    }

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

#####Action index code starts here 

public function actionIndex()
    {

        $this->layout = 'admin';
        $my2DbConn = Yii::$app->db;

        $model = new Site_login();


        if ($model->load(Yii::$app->request->post()) ) 
            {

                if ($model->validate()) {
            $url = Yii::$app->getUrlManager()->getBaseUrl()."/admin/search";
              return $this->redirect($url);
                                        } 
           }
        return $this->render('index', ['model' => $model]);
    }
public function actionInitial()
{
    $this->layout = 'site'; 
    $my2DbConn = Yii::$app->db2;        
    $model=new Initial_model();
    if ($model->load(Yii::$app->request->post()))
    {
    }
return $this->render('initial',['model'=>$model]);
    }

我想更改属于控制器的数据库。请给我一些帮助。我使用了两个db,但它会访问第一个db文件。

您可以在配置中配置更多的db

return [
'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=testdb',
        'username' => 'demo',
        'password' => 'demo',
    ],
    'db2' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=testdb2',
        'username' => 'demo2',
        'password' => 'demo2',
    ],
  ],
];
并获取您的db(如果您希望在controller中使用direct命令,而不是activeRecord,则使用此命令)

或者,您可以使用适当的设置以编程方式进行管理

如果对于您的模型(就像您在代码中所做的那样),您希望使用除db组件之外的其他数据库连接,则应覆盖相关ActiveRecord模型中的getDb()方法(请参阅底部的doc..链接):

并且不分配
$my2DbConn=Yii::$app->db在控制器中,这是用于createCommand(直接sql)的,而不是您需要的activeRecord


有关相关参数,请参阅本指南或本参考。您可以在配置中配置更多数据库

return [
'components' => [
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=testdb',
        'username' => 'demo',
        'password' => 'demo',
    ],
    'db2' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'mysql:host=localhost;dbname=testdb2',
        'username' => 'demo2',
        'password' => 'demo2',
    ],
  ],
];
并获取您的db(如果您希望在controller中使用direct命令,而不是activeRecord,则使用此命令)

或者,您可以使用适当的设置以编程方式进行管理

如果对于您的模型(就像您在代码中所做的那样),您希望使用除db组件之外的其他数据库连接,则应覆盖相关ActiveRecord模型中的getDb()方法(请参阅底部的doc..链接):

并且不分配
$my2DbConn=Yii::$app->db在控制器中,这是用于createCommand(直接sql)的,而不是您需要的activeRecord


有关相关参数,请参阅本指南或本参考资料

我们应该在每个操作中指定$my2dbConn?您可以按自己的级别执行。。。如果你在所有动作中使用,或者只在你需要的动作中使用,你也可以在模型中使用,然后使用一个函数来获取模型的数据库,就像指南中一样,什么叫不工作。。。错误。。错误的结果。。用你正在使用的代码更新你的帖子,并解释你的目标。。请在配置文件中配置多个db。并通过$my2DbConn=Yii::$app->db2访问;在每一个行动中。但是它将使用相同的第一个db文件。不通过第二个db2文件来展示您的db和db2配置代码。。以及你使用它们的行动。。(用相关代码更新您的问题…)这样ai可以检查我们应该在每个操作中指定$my2dbConn?您可以按您所期望的级别执行。。。如果你在所有动作中使用,或者只在你需要的动作中使用,你也可以在模型中使用,然后使用一个函数来获取模型的数据库,就像指南中一样,什么叫不工作。。。错误。。错误的结果。。用你正在使用的代码更新你的帖子,并解释你的目标。。请在配置文件中配置多个db。并通过$my2DbConn=Yii::$app->db2访问;在每一个行动中。但是它将使用相同的第一个db文件。不通过第二个db2文件来展示您的db和db2配置代码。。以及你使用它们的行动。。(用相关代码更新您的问题…)以便ai检查