thinkphp-データベース接続を構成する3つの方法

3287 ワード

thinkphp-データベース接続を構成する3つの方法
プロファイルdatabase.php:
1アプリケーションディレクトリのdatabaseに直接適用する.phpファイル内の構成(すべてのモジュールに適用)
2指定モジュールの下にあるdatabase.phpファイル内の構成(指定モジュールに適用)
デュアルコントローラのダイナミック構成
コントローラにDbクラスを導入する必要があります.
use think\Db;

1 Db::connect([構成情報]);
Db::connect([
    //      
    'type'        => 'mysql',
    //      DSN  
    'dsn'         => '',
    //      
    'hostname'    => '127.0.0.1',
    //     
    'database'    => 'thinkphp',
    //       
    'username'    => 'root',
    //      
    'password'    => '',
    //        
    'hostport'    => '',
    //        
    'params'      => [],
    //          utf8
    'charset'     => 'utf8',
    //       
    'prefix'      => 'think_',
]);

2 Db::connect(構成情報);文字列の使用
Db::connect('mysql://root:[email protected]:3306/thinkphp#utf8');

文字列接続の定義形式は次のとおりです.
データベースタイプ://ユーザ名:パスワード@データベースアドレス:データベースポート/データベース名#文字セット
3 Db::connect(プロファイル);
アプリケーション・プロファイル(ここではデータベース・プロファイルではないことに注意)で追加のデータベース接続情報が構成されている場合
//     1
'db_config1' => [
    //      
    'type'        => 'mysql',
    //      
    'hostname'    => '127.0.0.1',
    //     
    'database'    => 'thinkphp',
    //       
    'username'    => 'root',
    //      
    'password'    => '',
    //          utf8
    'charset'     => 'utf8',
    //       
    'prefix'      => 'think_',
],
//     2
'db_config2' => 'mysql://root:1234@localhost:3306/thinkphp#utf8';

この構成を使用して接続:
Db::connect('db_config1');

三モデルに配置する
1 connectionプロパティの使用
//               
namespace app\index\model;

use think\Model;

class User extends Model
{
    protected $connection = [
        //      
        'type'        => 'mysql',
        //      DSN  
        'dsn'         => '',
        //      
        'hostname'    => '127.0.0.1',
        //     
        'database'    => 'thinkphp',
        //       
        'username'    => 'root',
        //      
        'password'    => '',
        //        
        'hostport'    => '',
        //        
        'params'      => [],
        //          utf8
        'charset'     => 'utf8',
        //       
        'prefix'      => 'think_',
    ];
}

2 DSN文字列で定義することもできます
//               
namespace app\index\model;

use think\Model;

class User extends Model
{
    //         
    protected $connection = 'mysql://root:[email protected]:3306/thinkphp#utf8';
}

3データベース接続の直接使用をサポートする構成名
//               
namespace app\index\model;

use think\Model;

class User extends Model
{
    //          
    protected $connection = 'db_config1';
}