サブノート

技術的なトピックが中心の備忘録

cakephp

[PHP][CakePHP]発行したSQLを確認する

実際に発行された生のSQL文を見たい場合。SQL実行後に getDataSource()->getLog()); //以外 debug($this->[Model名]->getDataSource()->getLog()); ?> を埋める。 SQL文のみ表示。 ' . $this->getDataSource()->getLog()['log'][2]['query']); ?>

[PHP][CakePHP]テーブルのカラム変更が反映されない

テーブルのカラムを追加したが、Insertできない事態が発生した。 原因は app/tmp/cache/models 内の cake_models_xxx_yyy が残っていたため。 ファイルを削除すればキャッシュが消えて、変更が無事反映された

[PHP][CakePHP]アップロードされたファイルの改行コードを置換する

Windowsで作成されたファイルは改行コードがCR+LFなので、UNIX(LF)やMac(CR)だとうまく表示されない。 アップロードされたファイルの扱いをサーバのOSに依らず等しくするためにも、改行コードを揃えておく。

[PHP][CakePHP]DB接続先の切り替えを bootstrap.php で行う

DB接続先の切り替えをbootstrap.phpで行うよう編集する。./app/config/database.php の設定。 'mysql', : : ); var $product = array( 'driver' => 'mysql', : : ); /** DBの切り替え **/ public function __construct() { //cf. bootstrap.php $connec…

[PHP][CakePHP]レンダリング後(CTPファイルに変数埋め込み後)の内容をファイルとして保存する

CakePHPにおいて、views/layouts/top.ctp にレンダリングして画面表示する場合は autoLayout = true; $this->layout = 'top'; } ?> とする。一方、レンダリング後の内容をファイルに保存する(または、処理を加える)場合は autoLayout = false; // views/la…

[PHP][CakePHP]実処理をコンポーネントに任せる

controllerは短いほうが良い。 リクエストからレスポンスまでの処理の流れが一覧できる程度の長さが理想。よって実処理はcomponentに任せる。 JavaのServiceのイメージ。任せることによって コントローラの肥大化を回避 できるだけでなく、 処理の共通化(複…