ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP3.1 の新機能: マルチデータベース操作がより完全になった_PHP チュートリアル

ThinkPHP3.1 の新機能: マルチデータベース操作がより完全になった_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:24:28937ブラウズ

通常、アプリケーションが同じデータベース (または分散データベース) のみを操作する場合、プロジェクト構成ファイルでデータベース接続情報を定義するだけで済みます。ここでいうマルチデータベース運用とは、アプリケーション内で異なるデータベース(同種データベース、異種データベースを含む)を運用することを指し、複数のデータベースを動的に切り替えることも含まれます。

以前のバージョンの ThinkPHP では、データベースの切り替えに高度なモデルを使用する必要がありましたが、現在の 3.1 バージョンではより簡単に解決できます。

新しいバージョンは、次の方法で複数のデータをサポートします。開発者は、実際の状況に応じて適切な方法を選択できます。

1. モデル定義データベース

それが単純なライブラリ間操作であり、少数のモデル クラスのみの場合は、モデル クラスで dbName 属性を直接定義できます。

リーリー
インスタンス化するときは、必ず D メソッドを使用してください。例:

リーリー
この定義の前提は、現在のデータベース ユーザー アカウントが最上位データベースを操作する権限を持っているということです。

2. モデル定義データベース接続

クロスデータベース操作で異なるデータベース接続アカウントを使用するか、異なる種類のデータベースに接続する必要がある場合は、モデル クラスの操作時に接続属性を直接定義すると、指定されたデータベースに自動的に接続されます。例:

リーリー
または、配列メソッドを使用して次を定義します:

リーリー
構成ファイルで追加のデータベース接続情報を構成した場合、たとえば次のようになります。

リーリー

その後、モデルクラスの属性定義を次のように変更できます:

リーリー

または:

リーリー

このメソッドの利点は、さまざまなデータベース タイプをサポートできることです。つまり、現在のプロジェクト構成ファイルのデータベース タイプとは異なる可能性があります。欠点は、D メソッドを使用してインスタンス化する必要があり、動的に設定できないことです。

3. モデルのインスタンス化で接続を指定します

新しいバージョンでは、モデルをインスタンス化する際のデータベース接続の指定がサポートされています。例:

リーリー

または M メソッドを使用してインスタンス化します:

リーリー

M メソッドの 2 番目のパラメーターはデータ テーブルのプレフィックスです。空白のままにすると、プロジェクト構成のデータ テーブル プレフィックスが使用されます。3 番目のパラメーターは、現在のインスタンス化に必要なデータベース接続情報です。

同様に、インスタンス化中に渡されるデータベース接続情報も、次のような名前として構成できます。

リーリー

現在の操作でデータベース接続を切り替える必要がなく、データベースを切り替えるだけでよい場合は、次を使用できます:

リーリー

最上位データベースをインスタンス化する think_user データ テーブルを表します。データテーブルにプレフィックスがない場合は、
を使用できます。

リーリー

最上位のデータベースをインスタンス化するユーザー テーブルを表します。

4. 接続を動的に切り替える

このシステムは、モデル クラスによって提供される db メソッドを使用して、複数データベースの接続および切り替え操作を実行することもできます。

リーリー

データベース番号は数値形式です。呼び出されたデータベース接続については、データベース接続情報を渡す必要はなく、システムが自動的に記録します。初期化されたデータベース接続の場合、内部データベース番号は 0 であるため、競合を避けるために、データベース番号 0 でデータベース構成を再度定義しないでください。
データベース構成はモデル定義の接続属性と同じ方法で定義され、配列、文​​字列、呼び出し構成パラメーターの 3 つの形式をサポートします。

Db メソッドの呼び出し後に現在のモデル インスタンスが返され、モデルに対して他の操作を直接継続して実行できるため、このメソッドはクエリ プロセス中に動的に切り替えることができます。たとえば、次のようになります。

リーリー

このメソッドは、番号 1 のデータベース接続を追加し、現在のデータベース接続に自動的に切り替えます。

同じデータベースに 2 回目に切り替える場合、データベース接続情報を渡す必要はなく、それを直接使用できます:

リーリー

データベースを再度切り替える前に、現在の操作はすべて db(1) で設定されたデータベースに対して行われます。

デフォルトのデータベース接続に切り替える必要がある場合は、次のように呼び出してください:
リーリー


プロジェクト設定で他のデータベース接続情報を定義している場合は、db メソッドでその設定を直接呼び出して接続できます:

リーリー

データベースを切り替えた後、データテーブルが現在のデータテーブルと一致しない場合は、テーブルメソッドを使用して、操作対象のデータテーブルを指定できます:

リーリー

現在のデータベース接続を返したい場合は、次のように空の db メソッドを直接呼び出すことができます:

リーリー

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825453.html技術記事通常、アプリケーションが同じデータベース(または分散データベース)のみを操作する場合、データベース接続情報をプロジェクト構成ファイルに定義するだけで済みます。ここで...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。