スキーマが非publicのModelをbakeする

cakephp3のbakeコマンドを使って、
schemaがpublicでないテーブルのModelを生成する方法です。

configファイルの設定

まずは、config/app.phpファイルに、
データベースの接続情報を設定する必要があります。

// e.g.
'Datasources' => [

    // ...

    'mydb' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'username' => 'my_app',
        'password' => 'sekret',
        'database' => 'my_app',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
        'schema' => 'my_schema',
    ],

    // ...
],

その際、schema情報も忘れずに設定しましょう。
設定されていない場合、デフォルトでpublicに設定されます。

bakeコマンド

いよいよbakeコマンドです。
configファイルに設定した、mydb接続(上の例の場合)を、
bakeコマンドのオプションに指定しましょう。

$ bin/cake bake model --connection mydb
# bin/cake bake model -c mydb
# でも良い

上記コマンドでmydbで設定したスキーマに存在するテーブルが、
一覧表示されるかと思います。

あとは、

$ bin/cake bake model --connection mydb <table名>

上記コマンドのように、煮るなり焼くなり好きにしてください XD

ちなみに、下記コマンドで
全テーブルのModelを作成できます。

$ bin/cake bake model all --connection mydb

投稿日

カテゴリー:

投稿者:

タグ: