addictionwhite’s diary

考え中のことを整理と忘備録のために綴ります。ここに書かれている考えは翌日には変わる可能性があります

最近CakePHPで詰まったところ

最近触って詰まったところ。主にCake

同じところでつまらないように念のためメモ

しかし各々ちゃんとしたところまで調査しきれていない

■勝手に$belongToが外れる

共通処理をappControllerに記述して、その中でモデルをnewしてfindすると、何故かサブクラスのcontrollerの$this->Modelの$belongsToが解除される

(結合先のカラム名を条件にしてるので「そんなカラムはない」みたいなエラーが出る。

→原因はわからない(Cakeの仕様の理解不足かも)けど$this->Modelでなく、newでモデルを作り直して対処。

補足appControllerの中でnewしただけでは$belongsToは解除されず、find(readでも)すると解除される。

■独自バリデーションで空の値だと独自バリデーションが通らない

独自バリデーションの中にログ仕込んでも通っている様子がない

独自バリデーションのルールを一番上に持っていったらなおった。

間に複数バリデーションが張られていたので、それらが悪さしていたのかも(未検証)。

requireをtrueにすれば中に入るとか書いているサイトあった気がするけど通らなかった。

■bakeできない

cd /Applications/MAMP/htdocs/cakeStudy

./app/Console/cake bake

Error: Database connection "Mysql" is missing, or could not be created.のメッセージが出る

単純に設定のパスワード間違えてた。以下つながったときの設定。

public $default = array(

'datasource' => 'Database/Mysql',

'persistent' => false,

'host' => 'localhost',

'login' => 'root',

'password' => 'root',

'database' => 'cake_study',

'prefix' => '',

//'encoding' => 'utf8',

);

パスワード空だった

■ターミナルから叩くphpだとmysqlに接続できない

上記のbakeよりも二ヶ月ほど前に詰まって、上記のbakeもこれ関連だと勘違いした

(結果的に先にやってしまっただけで、こっちの対応も必要だったのかもしれないけど)

phpでバッチ作ろとして、mysqlの接続箇所でエラーが出た。

理由はpdoのソケットのパスが誤っている(ない?)、みたいな理由だった気がする。

エイリアスだけパパッと張ったら動いたので、細かく調査するの忘れた

(自分のローカルだけの問題だったし)。

さらには肝心の参考にしたサイトのURLを失念してしまった

コマンドこれかな?(ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock)

bakeできない問題が当初、これと同じ問題だと思ったので、参考にしたサイトを下にメモ

http://nafuruby.hatenablog.com/entry/2014/10/22/225832

http://plmin.us/blog/2013/01/16/mamp_cakephp_cake_bake/

http://www.hi-ho.ne.jp/tsumiki/book_sup2.html

http://webpaprika.com/957.html

// MAMP でインストールした PHPphp.ini ファイルの場所

http://dev.ontheroad.jp/archives/6843

やっぱコード見づらいからちゃんと見えるようにしたいな。

その他備考

Apache内蔵のPHPコマンドラインPHPは別物だよス byTwitterリプライ