ThinkPHP 3.2.3データベースの新特性設定


ThinkPHP 3.2.3バージョンのデータベースドライバはPDOで完全に書き換えられています。配置と使用も前のバージョンよりずっと柔軟で強いです。どうやって使うかを確認します。
まず、3.2.3のデータベース構成情報が調整され、完全なデータベース設定が含まれています。

/* */
 'DB_TYPE'               =>  '',     //
 'DB_HOST'               =>  '', //
 'DB_NAME'               =>  '',          //
 'DB_USER'               =>  '',      //
 'DB_PWD'                =>  '',          //
 'DB_PORT'               =>  '',        //
 'DB_PREFIX'             =>  '',    //
 'DB_PARAMS'          =>  array(), //
 'DB_DEBUG'  =>  TRUE, // SQL
 'DB_LITE'             =>  false,    // Lite
 'DB_FIELDS_CACHE'       =>  true,        //
 'DB_CHARSET'            =>  'utf8',      // utf8
 'DB_DEPLOY_TYPE'        =>  0, // :0 ( ),1 ( )
 'DB_RW_SEPARATE'        =>  false,       //
 'DB_MASTER_NUM'         =>  1, //
 'DB_SLAVE_NO'           =>  '', //
3.2.2バージョンに対して、以下の設定パラメータがキャンセルされました。

'DB_FIELDTYPE_CHECK' // 3.2.3
 'DB_SQL_BUILD_CACHE' // 3.2.3 SQL
 'DB_SQL_BUILD_QUEUE' // 3.2.3 SQL
 'DB_SQL_BUILD_LENGTH' // 3.2.3 SQL
 'DB_SQL_LOG' // DB_DEBUG
 'DB_BIND_PARAM' // PDO
追加したデータベース設定パラメータは以下の通りです。

'DB_DEBUG'  // , SQL
 'DB_LITE' // Lite SQL
3.2.2バージョンデータベースのデバッグモードとプロジェクトのデバッグモード(APP_DEBUG定数定義)はバインディングされています。3.2.3バージョンからデータベースのデバッグモードは独立して設定されています。DEBUGパラメータ設定)のです。
DB_TYPEパラメータはデータベースタイプの設定で、現在サポートされているドライバはmysql/sqlite/oracle/pgsql/sqlsrv/firebird(他のデータベースタイプはドライバを追加する必要があります)を含んでいます。
‘DB_’TYPE'=>'mysql'は、もはやPDOに設定されていません。mysqlとmysqliは区別されません。
データベースの接続情報は主に以下のパラメータを含みます。

'DB_HOST'               =>  '', // IP
 'DB_NAME'               =>  '',          //
 'DB_USER'               =>  '',      //
 'DB_PWD'                =>  '',          //
 'DB_PORT'               =>  '',        //
 'DB_CHARSET'            =>  '',      //
以上の設定パラメータはPDOを実装すると自動的にPDOに変換された接続パラメータが入力されます。
DB_DSNパラメータは一般的に設定する必要がなく、システムのデータベースドライバは標準設定を行います。調整が必要なら、PDOの関連データベース接続のDSN設定に従って設定してください。
DB_PAAMSはデータベースの接続パラメータを設定するために使用され、PDO実装の4番目のパラメータに入ります。
以下は典型的なデータベース全体の設定です。

'DB_TYPE'               =>  'mysql',     //
 'DB_HOST'               =>  '192.168.1.10', //
 'DB_NAME'               =>  'thinkphp',          //
 'DB_USER'               =>  'root',      //
 'DB_PWD'                =>  '1234',          //
 'DB_PORT'               =>  '3306',        //
 'DB_PREFIX'             =>  'think_',    //
 'DB_CHARSET'            =>  'utf8',      //
 'DB_DEBUG'  =>  TRUE, // SQL
モデルクラスに独自のデータベース接続情報connection属性を設定する場合、次の配列または文字列方式を使用することができる。

//
 namespace Home\Model;
 use Think\Model;
 class UserModel extends Model{
 // 
    protected $connection = array(
        'db_type'  => 'mysql',
        'db_user'  => 'root',
        'db_pwd'   => '1234',
        'db_host'  => '192.168.1.10',
        'db_port'  => '3306',
        'db_name'  => 'thinkphp',
        'db_charset' =>    'utf8',
    );
 }
注意:モデルで設定したデータベース接続設定パラメータは、グローバル構成の小文字名を使用します。
または文字列で定義され、書式は以下の通りです。
データベースタイプ://ユーザ名:パスワード@データベースアドレス:データベースポート/データベース名唩文字セット
たとえば:

//
 namespace Home\Model;
 use Think\Model;
 class UserModel extends Model{
    //
    protected $connection = 'mysql://root:[email protected]:3306/thinkphp#utf8';
 }
プロファイル設定により、例えば、

// 1
 'DB_CONFIG1' => array(
    'db_type'  => 'mysql',
    'db_user'  => 'root',
    'db_pwd'   => '1234',
    'db_host'  => '192.168.1.10',
    'db_port'  => '3306',
    'db_name'  => 'thinkphp',
    'db_charset'=>    'utf8',
 ),
 // 2
 'DB_CONFIG2' => 'mysql://root:[email protected]:3306/thinkphp#utf8';
そしてモデルの中で定義します。

//
 namespace Home\Model;
 use Think\Model;
 class UserModel extends Model{
    // 1
    protected $connection = 'DB_CONFIG1';
    //
    protected $connection = 'DB_CONFIG2';
 }
モデル定義時にデータベース接続情報を指定する以外にも、実装時にデータベース接続情報を指定することができます。M方法の実用化モデルを採用すれば、異なるデータベース接続情報を導入することもできます。

$User = M('User','other_','mysql://root:[email protected]/demo#utf8');
Userモデルを実例化し、Demoデータベースのotherを接続しています。userテーブルで使用している接続情報は3番目のパラメータ構成です。
プロジェクト配置ファイルにDB_が配置されている場合CONFIG 2なら、採用も可能です。
$User=M('User'、'other'、'DB_CONFIG 2)
以上が本文の全部です。お好きになってください。