本日もcakeネタです。
CSVインポート&エクスポート
CSVのインポートとエクスポートについて。
かなりいろいろなプラグインがあるようですが、一番楽なのはbehaviorを使う手法のようです。
app\Model\Behavior直下に下記ファイルを作成します。
CsvExportBehavior.php
CsvImportBehavior.php
ソースはそれぞれ下記にあります。
参考リンク
CakePHPでテーブルの情報をCSVに吐いたり読んだりしてみる
ソース
https://github.com/pronique/CakePHP-ProUtils-Plugin/blob/master/Model/Behavior/CsvExportBehavior.php
https://github.com/CakeDC/utils/blob/master/Model/Behavior/CsvImportBehavior.php
下記のようなことに注意する必要があります。
エクスポート
- ダウンロードはテーブルの全データを自動的にダウンロードしてしまう(find(“all”)の記述あり)
- 検索を入れたい場合はCsvExportBehavior.phpのカスタマイズが必要
インポート
- csvのフィールド名とデータベースのフィールド名が同じだとそのままインサートされる。。
- 逆に言うとそうでないものはインサートできないので、CsvImportBehavior.phpのソースをいじるか、beforesaveなどで対応する必要がある。