sql >> データベース >  >> RDS >> Mysql

CakePHP3で複数のデータベースに接続する

    同じcakephpアプリケーション内で複数のデータソースを使用するには、以下の手順に従います。

    Config/app.phpで複数のデータベースソースに言及

    複数のデータソース構成を管理する必要があります。デフォルトのデータソースではメインデータベースを保持し、もう1つのデータソースを作成して、2番目のデータソースの履歴と呼ぶことができます。下記のとおり

    'Datasources' => [
        'default' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => '<host name>',
            'username' => '<database user>',
            'password' => '<database password>',
            'database' => '<database name>',
            'encoding' => 'utf8',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
            'quoteIdentifiers' => false,
            'url' => env('DATABASE_URL', null),
        ],
        'history' => [
            'className' => 'Cake\Database\Connection',
            'driver' => 'Cake\Database\Driver\Mysql',
            'persistent' => false,
            'host' => '<host name>',
            'username' => '<database user>',
            'password' => '<database password>',
            'database' => '<database name>',
            'encoding' => 'utf8',
            'timezone' => 'UTC',
            'flags' => [],
            'cacheMetadata' => true,
            'log' => false,
            'quoteIdentifiers' => false,
            'url' => env('DATABASE_URL', null),
        ]
    ]
    

    テーブルクラスでデータソースを指定する

    Src/Model/Table/<AnyOtherSource>Table.php内 、履歴データソースを使用する場合は、以下のメソッドを追加します。デフォルトのデータソースを使用する必要がある場合は、以下のメソッドを追加する必要はありません。デフォルトのデータソースの場合、CakePHPがそれを処理します。

    public static function defaultConnectionName() {
        return 'history';
    }
    

    CakePHP3での参加とモデルの関連付け

    Src/Model/Table/<All>Table.phpに以下のコードを追加します

    class LogsTable extends Table {
    
        public function initialize(array $config) {
            parent::initialize($config);
    
            $this->table($this->connection()->config()['database'] . "." . $this->table()); // this is very important for joining and associations.
    
            // your other code for initilize method
        }
    
        public static function defaultConnectionName() {
            return 'history';
        }
    
        // other methods and your code should be here
    
    }
    



    1. MYSQL:Where句があいまいです

    2. 時間情報の保存:タイムゾーンが必要ですか?

    3. mysqlの低速クエリログの回転

    4. すべてのUTF8文字を最も標準的な形式に正規化する