参照:http://ameblo.jp/hyperdev/entry-10412507754.html
基本的にはCSVヘルパーを追加し、コントローラでデータを取得後、ビューファイル側である程度整形して出力するものだ。
この際、コントローラ側では、データを集計して新たなフィールドとしてCSVに追加したり、項目名をテーブルのフィールド名ではなく、日本語で設定したいなど、いろいろ業務レベルで使うには物足りないものを追加しておかないといけない。
というわけで、単純且つ富豪的に考えてみた。
DBテーブルは売上げテーブルみたいな感じを想定し、priceを合計して支払フィールドとしてやってみる。
まずテーブル定義だが、historiesテーブルを用意し、中味は
[histories]
- id
- item_id
- name
- price
- created
このpriceを合計して出すことにする。
実際のCSVは、
[支払.csv]
- 商品ID
- 商品名
- 金額
- 個数
- 合計金額
この場合、コントローラ側では
[history_controller.php]
- $this->History->find('all', $conditions);
たとえば2010年1月以前のもの、など。
なのでこのようなソースになる。
- $conditions = array(
- 'conditions' => array(
- 'created<' => '2010-01-01'
- ),
- );
- $this->set('histories', $this->History->find('all', $conditions);
後はビュー側でCSVヘルパーを使い、各フィールド名を指定すればOKだ。
[histories/csv.ctp]
- $csv->addGrid($histories, false);
- $csv->setFilename('支払.csv');
- echo mb_convert_encoding($csv->render(), 'SJIS', 'UTF-8');
これがCSVダウンロードの基本。
これをカスタマイズし、自由自在にCSVファイルを扱えるようにする。
続く。
facebook
twitter
google+
fb share