ホームページ >バックエンド開発 >PHPチュートリアル >yii2 複数のデータベース インスタンス メソッドを使用する

yii2 複数のデータベース インスタンス メソッドを使用する

小云云
小云云オリジナル
2018-02-12 14:31:561807ブラウズ

yii2 の構成と複数のデータベースの操作に関して、このドキュメントでは具体的な構成も非常に簡単に示しています。ここでは、単一の管理ライブラリ dbname2 とビジネス ライブラリ dbname を例として取り上げます。複数のデータベース。この記事では、yii2 で複数のデータベースを利用する場合を中心に紹介しますので、お役に立てれば幸いです。

No1. 最初のステップでは、Baidu のほとんどのドキュメントを参照して操作できます。


'components' => [
  'db' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=ip;dbname=dbname',
    'username' => 'username',
    'password' => 'pwd',
    'charset' => 'utf8',
  ],
  'db2' => [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=ip;dbname=dbname2',
    'username' => 'username',
    'password' => 'pwd',
    'charset' => 'utf8',
  ],
],

No2. 2 番目のステップでは、構成ファイル main.php を開き、4 つの権限関連のデータ テーブル構成を authManager オプションに追加します。


'authManager' => [
  'class' => 'yii\rbac\DbManager',
  'defaultRoles' => ['guest'],
  'itemTable' => 'dbname2.auth_item',
  'itemChildTable' => 'dbname2.auth_item_child',
  'assignmentTable' => 'dbname2.auth_assignment',
  'ruleTable' => 'dbname2.auth_rule',
],

実際、ここで設定されているのは、vendaryiisoftyii2rbacDbManager.php クラスの 4 つのプロパティです。これは上記と一致しており、プロジェクト設定ファイルを直接変更する必要があります。

いいえ、もうすぐ終わります。まだ読んでいないのですが、なぜですか?それで、ユーザーテーブルとメニューテーブルをどうすればよいと思いますか?心配しないで、3 番目のステップを見てみましょう:

このステップも非常に簡単です。次のように構成するだけです

プロジェクトの configparams.php ファイルを見つけて、次の構成項目を追加します。わかりました


'mdm.admin.configs' => [
  'menuTable' => 'dbname2.menu',
  // 'userTable' => 'dbname2.user',
],

注意、なぜ上記の設定項目 userTable がブロックされているのでしょうか? これは個人の設定によって異なります。ファイル Vendormdmsoftyii2-admincomponentsConfigs.php を開き、userTable 属性があるかどうかを確認してください。設定されていない場合は、設定してみてください。まだ 1 つのステップが残っています。これも例です。

上記の userTable を例として考えてみましょう。gii を使用してモデル ファイル User.php を生成すると、デフォルトで設定されたテーブルは dbname ライブラリにあり、user テーブルは dbname2 ライブラリにあるためです。 , User.php モデル ファイルの tableName メソッドを変更し、テーブルの前にライブラリ名を追加する必要があります。

public static function tableName()
{
  return 'dbname.user';
}

関連する推奨事項:


phpで複数のデータベースを操作するためのCIのコード

php複数のデータベースに同時に接続する方法_PHPチュートリアル

PHP複数のデータベース間でクエリを記述する方法ステートメント

以上がyii2 複数のデータベース インスタンス メソッドを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。