通常、アプリケーションが同じデータベース (または分散データベース) のみを操作する場合、プロジェクト構成ファイルでデータベース接続情報を定義するだけで済みます。ここでいうマルチデータベース運用とは、アプリケーション内で異なるデータベース(同種データベース、異種データベースを含む)を運用することを指し、複数のデータベースを動的に切り替えることも含まれます。
以前のバージョンの ThinkPHP では、データベースの切り替えに高度なモデルを使用する必要がありましたが、現在の 3.1 バージョンではより簡単に解決できます。
新しいバージョンは、次の方法で複数のデータをサポートします。開発者は、実際の状況に応じて適切な方法を選択できます。
1. モデル定義データベース
それが単純なライブラリ間操作であり、少数のモデル クラスのみの場合は、モデル クラスで dbName 属性を直接定義できます。リーリー
リーリー
2. モデル定義データベース接続
クロスデータベース操作で異なるデータベース接続アカウントを使用するか、異なる種類のデータベースに接続する必要がある場合は、モデル クラスの操作時に接続属性を直接定義すると、指定されたデータベースに自動的に接続されます。例:リーリー
リーリー
リーリー
リーリー
リーリー
新しいバージョンでは、モデルをインスタンス化する際のデータベース接続の指定がサポートされています。例:
リーリー
リーリー
同様に、インスタンス化中に渡されるデータベース接続情報も、次のような名前として構成できます。
リーリー
リーリー
リーリー
このシステムは、モデル クラスによって提供される db メソッドを使用して、複数データベースの接続および切り替え操作を実行することもできます。
リーリーデータベース番号は数値形式です。呼び出されたデータベース接続については、データベース接続情報を渡す必要はなく、システムが自動的に記録します。初期化されたデータベース接続の場合、内部データベース番号は 0 であるため、競合を避けるために、データベース番号 0 でデータベース構成を再度定義しないでください。
Db メソッドの呼び出し後に現在のモデル インスタンスが返され、モデルに対して他の操作を直接継続して実行できるため、このメソッドはクエリ プロセス中に動的に切り替えることができます。たとえば、次のようになります。
リーリー
このメソッドは、番号 1 のデータベース接続を追加し、現在のデータベース接続に自動的に切り替えます。
リーリー
データベースを再度切り替える前に、現在の操作はすべて db(1) で設定されたデータベースに対して行われます。
デフォルトのデータベース接続に切り替える必要がある場合は、次のように呼び出してください:
プロジェクト設定で他のデータベース接続情報を定義している場合は、db メソッドでその設定を直接呼び出して接続できます:
データベースを切り替えた後、データテーブルが現在のデータテーブルと一致しない場合は、テーブルメソッドを使用して、操作対象のデータテーブルを指定できます:
現在のデータベース接続を返したい場合は、次のように空の db メソッドを直接呼び出すことができます: