CakePHP CSV出力機能(friendsofcake/cakephp-csvview)
インストール
Composerã‹ã‚‰ãƒ©ã‚¤ãƒ–ラリインストール
# composer require friendsofcake/cakephp-csvview:~3.0
è¨å®š
※~/config/bootstrap.php
Plugin::load('CsvView');
コントãƒãƒ¼ãƒ©
直接出力
public function receiptDownload(){
 出力対象
 $receipts = $this->Receipt
  ->find()
  ->all();
 $_serialize = ['receipts'];
 ヘッダー(※çœç•¥å¯)
 $_header = ['Column 1', 'Column 2', 'Column 3'];
 フッター(※çœç•¥å¯)
 $_footer = ['件数:' . $receipts->count()];
 ファイルå(※çœç•¥å¯)
 $this->response->download('売上一覧.csv');
 CsvViewを利用
 $this->viewBuilder()->className('CsvView.Csv');
 è¨å®šå€¤ã‚’プラグインã¸å¼•ãæ¸¡ã—
 $this->set(compact('receipts', '_serialize', '_header', '_footer'));
}
テンプレート使用
public function receiptDownload(){
 出力対象
 $receipts = $this->Receipt
  ->find()
  ->all();
 $_serialize = null;
 ファイルå(※çœç•¥å¯)
 $this->response->download('売上一覧.csv');
 CsvViewを利用
 $this->viewBuilder()->className('CsvView.Csv');
 è¨å®šå€¤ã‚’プラグインã¸å¼•ãæ¸¡ã—
 $this->set(compact('receipts', '_serialize'));
}
\src\Template\(コントãƒãƒ¼ãƒ©å)\csv\receipt_download.ctp
<?php foreach ($receipts as $receipt): ?>
  列åã€ãƒ‡ãƒŸãƒªã‚¿(,)を指定
  <?php echo $receipt->id ?><?php echo ',' ?>
  <?php echo $receipt->col1 ?><?php echo ',' ?>
  <?php echo $receipt->col2 ?><?php echo ',' ?>
  JOINã—ãŸå ´åˆã®è¤‡å±¤ãƒ¢ãƒ‡ãƒ«ã‚’指定
  <?php echo $receipt->Model1['col'] ?><?php echo ',' ?>
  最終列ã«ã¯æ”¹è¡Œã‚’指定
  <?php echo $receipt->Model2['col'] ?><?php echo 'PHP_EOL' ?>
<?php endforeach; ?>