CakePHP

テストコードあれこれ

Composerを使ってPHPUnitをインストールする composer.jsonの中身 "require-dev": { "phpunit/phpunit": "3.7.*" } composerのインストールコマンドを叩いてPHPUnitをインストール $ ./composer.phar install --dev PHPUnitがインストールされたかどうかを確…

プリペアドステートメントでWHERE INを使おうとしたが…

ToDo プリペアドステートメントのIN句のところに、カッコで囲まれたプレースホルダを書く プレースホルダにはカンマ区切りの文字列を渡す 例 $mychuno_ids); $result = $this->query($sql, $p…

Shellの実行あれこれ

コマンドラインで実行 $ /var/www/hogehoge/app/Console/cake シェルクラス名 cronに設定($ crontab -e)して実行 */10 1-21 * * * /var/www/hogehoge/app/Console/cake シェルクラス名 Chefにcronの設定を書いて実行 cron 'hogehoge_cron' do action :create…

INNER JOINする時の注意点

$contains, 'conditions' => $conditions, 'joins' => array( array( 'type' => 'INNER', 'table' => 'mychuno_users', 'alias' => 'MyChunoUsers', 'conditions' => '◯◯◯…

【CakePHP2.x】CakePlugin::load()でエラー

エラーの内容 新しいプラグイン(仮にBとする)を導入するため、Config/bootstrap.phpの CakePlugin::load(‘A’); となっていたところに、 CakePlugin::load(‘A’, ‘B’); としたところ、 ”Unsupported operand types” というエラーが発生した。 原因 上記のload…

【CakePHP2.x】パンくずリスト

CakePHP1系でもgetCrumbList()が使えるように、必要なものをCakePHP2から移植。 '<a href="%s"%s>%s</a>', 'tag' => '<%s%s>%s</%s>', 'ul' => '<ul%s>%s</ul>', 'ol' => '<ol%s>%s</ol>', 'li' => '<li%s>%s</li>', ); protected $_crumbs = array(); public…

【CakePHP2.x】routes.phpの設定あれこれ

似たようなルーティングを適用させる Config/routes.php の設定は上から順に適用される。 Router::connect('/hoge/*’, 〜 Router::connect('/hoge/:type’, 〜 Router::connect('/hoge/view/:id’, 〜 としてしまうと、後半2つは無視されるので、 Router::conn…

【CakePHP2.x】複数のチェックボックスをチェックした時にPOST送信させる

View側 <div id="div_no_id"> <form action="" method="post" id="form_no_id"> <dt>チェックボックス</dt> Form->create('menu', array('type'=> 'get')); echo $this->Form->input( 'industry', array( 'type' => 'select', 'multiple' => 'checkbox', 'legend' => false, 'div' => false, 'label' => false, 'n…</form></div>

【CakePHP2.x】Modelのアソシエーションを解除したいとき

belongsToやhasMany等に記述した他のModelとの結びつきを解除したいときは以下の手順を踏む。 actsAs に Containable を記述 'contain' => false を記述する 例えば… public $actsAs = array('Containable'); … $findParams = array(‘contain’ => false); re…

ランダムに複数の抽出結果を取得する

CakePHP2で、 ‘order’ => ‘rand()’ として検索結果をランダム取得しようとしていたが、生成されたSELECT文には ORDER BY rand() ASC と指定されていて、更にEXPLAINで調べてみたところ、見事にExtraの項目に、 Using where; Using temporary; Using file sor…

【CakePHP2.x】SQL確認方法あれこれ

Viewに仕込む場合 element('sql_dump'); ?> View以外に仕込む場合 モデル名->getDataSource()->getLog()); // 個人的にはこちらのほうが好き var_dump($this->モデル名->getDataSource()->getLog());

【CakePHP2.x】containを含んだpaginateの実装

例えば、 User→Company User→Country のようなつながりのあるモデルのみを参照したい場合、 Controller側 array( ‘Company’, ‘Country’, ), 'conditions' => array( ‘User.enabled’ => 1, ‘User.type' =>1, 'User.type' => 'outline', ), 'limit' => 10, 'p…

【CakePHP2.x】HTMLヘルパーによるリンク生成

構文 Html->link( 文字列や画像等, リンク情報(パラメータ), その他の情報 ); ?> コントローラ名を手動で設定する場合 リンク情報の先頭にスラッシュを記述する 連想配列でコントローラ名やアクション名を指定 Html->link( '検索する', '/mychuno/' . $actio…

まとめて変数をViewにセットする方法

コントローラ側 $this->set(compact("user", "shippingDay", "deliveryStatusString")); ビュー側 <td><?php echo $user['UserConfirm']['slip_number']; ?></td> <td><?php echo $shippingDay; ?></td> <td>2011/08/01 8:00-12:00</td> <t…

hiddenタグの書き方

Viewに以下のように書く。 echo $form->hidden('項目名', array('value'=>'値')); すると、 array(1){["モデル名"]=> array(1){'項目名'=> string(10) "2011-09-22"}} のように飛ぶ。

Authで大ハマリ

ログイン機能を実装していたときにハマったところ。

Qdmailでメール送信

うまくいかないと以下のようなエラーが出る。 Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.3.3 Qdmail error: OS Linux ; PHP Version 5.3.3 ; Qdmail version 1.2.6b php.ini status: mb_language = neutral ; mb_internal_encoding = UTF-8 ; mb_…

続・設定でハマったところ

CentOS環境。 Forbidden(403エラー)が出る SELinuxの無効化 # vi /etc/selinux/config SELINUX=disabled # reboot …しかし効果はなかった。 ホームディレクトリのアクセス権限をチェック homeディレクトリの権限が700になっていた→755に修正 $sudo chmod 75…

設定でハマったところ

MacOS環境。 CakePHPのWelcomeページでスタイルシートが適用されていない 対応策 app/config/core.php Configure::write('App.baseUrl', env('SCRIPT_NAME')); がコメントアウトされているので、それを外す Welcomeページに「Cake is NOT able to connect to…