ホームページ  >  記事  >  PHPフレームワーク  >  thinkphp は新しいデータベースを個別に構成できますか?

thinkphp は新しいデータベースを個別に構成できますか?

藏色散人
藏色散人オリジナル
2022-12-13 09:24:401613ブラウズ

thinkphp は新しいデータベースを個別に設定できます。設定方法は次のとおりです: 1. アプリケーション設定ファイルまたはモジュール設定ファイルに「'DB_HOST' => 'localhost'...」などの設定パラメータを追加します。 . 異なるアプリケーション状態の構成ファイルに独立したデータベース構成情報を定義します。 3. インスタンス化するときに、「$User = M('User','other_','mysql://root 」などの構文を使用してデータベース接続情報を指定します。 .."。

thinkphp は新しいデータベースを個別に構成できますか?

このチュートリアルの動作環境: Windows 7 システム、ThinkPHP バージョン 5、Dell G3 コンピューター。

thinkphp は単独で使用できます 新しいデータベースを構成しますか?

はい。

Thinkphp モデル - データベースに接続してモデル データベース接続を独立して構成します

データベース

ThinkPHPには抽象化が組み込まれています データベース アクセス層は、さまざまなデータベース操作をカプセル化します。データベースごとに異なるコードや基盤となる実装を記述せずに操作するには、パブリック Db クラスを使用するだけで済みます。Db クラスは自動的に呼び出します処理に対応するデータベース ドライバー。現在、データベースには Mysql、SqlServer、PgSQL、Sqlite、Oracle、Ibase、Mongo、および PDO のサポートが含まれます。

アプリケーションがデータベースを使用する必要がある場合、データベース接続情報が必要ですデータベース設定ファイルには複数の定義があります 方法.

1. グローバル設定定義

一般的に使用される設定方法は、アプリケーション設定ファイルまたはモジュール設定ファイルに次の設定パラメータを追加することです。 :

//数据库配置信息'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'thinkphp', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => '123456', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_CHARSET'=> 'utf8', // 字符集

データベースのタイプは、DB_TYPE パラメータ設定によって指定されます。

現在サポートされているデータベース設定は次のとおりです:

thinkphp は新しいデータベースを個別に構成できますか?

If DB_TYPE PDO タイプを使用し、データベース タイプは DB_DSN 構成によって決まります。

または、次の構成を使用します

'DB_DSN' => 'mysql://root:123456@localhost:3306/thinkphp#utf8'

DB_DSN モード定義を使用すると、構成パラメータを簡素化できます。DSN パラメータの形式は次のとおりです:

データベース タイプ://ユーザー名:パスワード@データベース アドレス:データベース ポート /データベース名#文字セット

文字セットの設定はバージョン 3.2.1 以降で有効である必要があります。 set が設定されていない場合、デフォルトは utf8 です。

両方の構成パラメータが同時に存在する場合、DB_DSN 構成パラメータが優先されます。

注: 分散データベースをセットアップする場合は、 DB_DSN 構成は、当面サポートされていません。

PDO ドライバーを使用する場合は、最初に **DB_TYPE*​​ を pdo として構成する必要があります。次に、他のパラメーターを個別に構成する必要があります。例:

//PDO连接方式
'DB_TYPE' => 'pdo', // 数据库类型
'DB_USER' => 'root', // 用户名
'DB_PWD' => '', // 密码
'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_DSN' => 'mysql:host=localhost;dbname=thinkphp;charset=UTF-8'

注: PDO モードの DB_DSN 設定形式はデータベースの種類によって異なりますので、詳細は PHP マニュアルを参照してください。

構成ファイルで定義されたデータベース接続情報は、通常、アプリケーションのデータベース アクセス構成が同じであるため、システムによってデフォルトで使用されます。この方法では、データベースに接続するときにシステムが自動的に取得するため、手動で接続する必要はありません。

モジュールごとに異なるデータベース接続情報を定義できます。デバッグ モードがオンになっている場合は、さまざまなアプリケーション状態の構成ファイルに独立したデータベース構成情報を定義することもできます。

2. モデル クラスの定義

接続属性がモデル クラスで定義されている場合、カスタム モデルをインスタンス化するときに、設定されたデフォルトの接続情報セットではなく、定義されたデータベース接続情報が使用されます。ファイル内の は通常、現在のデータベース接続の外部にある他のデータベースにある一部のデータ テーブルに使用されます。例:

//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
protected $connection = array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset' => 'utf8',
);
}

DSN モードで定義することもできます。例:

//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
//或者使用DSN定义
protected $connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';
}

構成ファイルで追加のデータベース接続情報を構成した場合、たとえば:

//数据库配置1
'DB_CONFIG1' => array(
'db_type' => 'mysql',
'db_user' => 'root',
'db_pwd' => '1234',
'db_host' => 'localhost',
'db_port' => '3306',
'db_name' => 'thinkphp',
'db_charset'=> 'utf8',
),
//数据库配置2
'DB_CONFIG2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';

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

//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class UserModel extends Model{
//调用配置文件中的数据库配置1
protected $connection = 'DB_CONFIG1';
}
//在模型里单独设置数据库连接信息
namespace Home\ Model;
use Think\ Model;
class InfoModel extends Model{
//调用配置文件中的数据库配置1
protected $connection = 'DB_CONFIG2';
}

3 .インスタンス化の定義

モデルを定義するときにデータベース接続情報を指定することに加えて、モデルをインスタンス化するときにデータベース接続情報を指定することもできます。たとえば、M メソッドを使用してモデルをインスタンス化する場合、それも指定できます。さまざまなデータベース接続情報の受け渡しをサポートできます。例:

$User = M('User','other_','mysql://root:1234@localhost/demo#utf8');

は、User モデルをインスタンス化し、デモ データベースの other_user テーブルに接続することを意味し、使用される接続情報は 3 番目のパラメーターで構成されます。プロジェクト構成ファイルで DB_CONFIG2 を構成した場合は、次も使用できます。

$User = M('User','other_','DB_CONFIG2');

ThinkPHP のデータベース接続は遅延しているため、インスタンス化時にデータベースに接続しませんが、データベースは実際のデータ操作がある場合にのみ接続されます (また、システムが初めてモデルをインスタンス化するとき、システムは自動的にデータベースに接続し、関連するモデル クラスに対応するデータ テーブルのフィールド情報を取得します)。

推奨学習: 「thinkPHP ビデオ チュートリアル

以上がthinkphp は新しいデータベースを個別に構成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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