install

generate code

docker run composer だとintlがないからインストールに失敗するため
composer.pharをダウンロード

$ php composer.phar create-project –prefer-dist cakephp/app cms

set up database

change host, database name, etc…
$ vim config/app.php

insert sql by hand.

rule

Entity: Article
Table: ArticlesTable
Class: ArticlesController
View: Articles/index.ctp

bake

bin/cake bake all users
or
bin/cake bake model users
bin/cake bake controller users
bin/cake bake template users

tips

モデルのデータベースアクセスをSQLで確認する

$data = $this->SampleModel->find('all);
$sqlLog = $this->SampleModel->getDataSource()->getLog(false, false);
debug($sqlLog);

json返す型

public function getJson()
{
    $this->autoRender = false;
    if(!$this->request->is('ajax')) {
      throw new BadRequestException();
    }

    $result = 'NG';
    $data = $this->request->data;
    if (strlen(strlen($data['id']) !== 0) {
        // do something
        $result = 'OK';
    }
    echo json_encode(compact('result'));
}

csvダウンロード型
これだと中身が多いとメモリを消費する
中身が多い場合は小分けにファイル保存して、ファイルダウンロードする

public function download($uid)
{
    $this->autoRender = false;
    $this->response->type('csv');

    $fileName = '1.csv';
    $this->response->download($fileName);

    $str = "sample, sample2";
    $str .= "1, 2";

    $str = mb_convert_encoding($str, 'SJIS-win', 'utf8');
    $this->response->body($str);
}