[cakephp2.x]CakePHPシェルからDBの初期データを入れるプラグイン

スポンサーリンク

cakephpでテーブルの管理はschema機能がすごく便利ですが、これにはDB上の固定データを登録する機能がありません。

実はこんな方法があります
cakephp Schemaを使って初期データも突っ込む方法
schma.phpにごにょごにょ書けば登録してくれるようですがschemaを更新すると上書きされてしまうためその都度書き足す必要があるので面倒です。
別途SQLファイルで管理する手もあるのですが、あまりスマートではないような…。

ということで作りました。

テーブルダンププラグイン
https://github.com/codelab-opensrce/TableDump
出来ることは、
・テーブルの中身をCSVに書きだす
・書き出したCSVをテーブルに入れる
これだけです。
固定データはCSVでファイル管理できるので扱いやすいと思います。
ソースコード更新用のシェルでも作ってこのシェル経由でデータの追加も可能。

使い方
GITを使う場合はこちらの
https://github.com/codelab-opensrce/TableDump
パッケージリストに登録する場合、大文字が含まれているとNGなのでリネーム
https://github.com/codelab-opensrce/table_dump

パッケージリストのページ
https://packagist.org/packages/codelab-opensrce/table_dump

composerを使う方はcomposer.jsonのrequireセクションに以下を書き足してください

"require": {
"codelab-opensrce/table_dump": "0.0.2",
},

※パッケージリストに登録したのでレポジトリが不要になり、レポジトリ名も変更になりました。
コンポーサーの場合は自動的にAPP/Pluginディレクトリに配置されるはずです。

次に、プラグインをロードするためにbootstrap.phpに以下を書き足してください。
CakePlugin::load(‘TableDump’);
又は
CakePlugin::loadAll();

これで準備完了
起動方法ですが、CakePHPのShell機能を使っています。
エクスポートは下記のコマンドになります
./app/Console/cake tabledump export [model_name]
エクスポートするとAPP/Config/Schema/export_(モデル名).csv という形でCSVに出力されます。

出力されたCSVをインポートするのは下記になります。
./app/Console/cake tabledump import [model_name]

他にも下記のオプションがあります。
drop : インポートする前にテーブルをドロップする
./app/Console/cake tabledump import ModelName drop

conection [database name]: データベースの切り替え database.phpで書かれている設定名を指定します。test のデータベースのインポートは下記になります。
./app/Console/cake tabledump import ModelName conection test

force : すべての問にYESで答えます。バッチで強制的に行う場合はこれを入れておけば操作無でインポートできます。
※無条件にテーブルをドロップしてインポートする
./app/Console/cake tabledump import ModelName drop force

limit [num]: エクスポートするレコードの最大数 default is 9999
./app/Console/cake tabledump export ModelName limit 100

以上です。

タイトルとURLをコピーしました