CakePHP: 対象データがなかった場合のFindとFindAllにおける戻り値の違い

CakePHP No Comments

CakePHP で使うモデルのメソッド Find と FindAll で、対象データがなかった場合は戻り値が少し違う。

Find と FindBy の場合、対象データがなかったら false が返ってくる。

それに対して FindAll と FindAllByの場合は false ではなく空の配列が返ってくる。

ということはどういうことかというと、

if (!$this->User->FindAllById($id)) {
    //対象データがなかった場合の処理
}

なら期待どおり動くが

if ($this->User->FindAllById($id) === false) {
    //対象データがなかった場合の処理
}

ではダメということ。

Find, FindBy なら false が返ってくるからどっちでもいける。

対象データの存在確認をするなら findCount で調べればいいわけで、そのために findAll を使うことはないかもしれないけど、例えば

$users = $this->User->FindAllByGroupId($group_id);
if ($users === false) {
    //対象データがなかった場合の処理
}

は、ついやってしまいそうな気がする。しない?

WordPressでドメインを変更するとき

WordPress No Comments

まあ当たり前なんだけど、やってしまったのでメモ。

このブログじゃないんだけど、WordPress でつくったもののサブドメインを変えたら管理画面にアクセスできなくなった。というよりブログ自体まともに表示されなくなった。

WordPress は URL を管理画面の「各種設定」→「一般設定」で設定するようになっていて、ログインするための画面や CSS ファイルなどの場所もそれを見てリダイレクトなり読み込みなりしている模様。

なので WordPress でドメインを変更するときは、先に両方のドメインでアクセスできるようにしておいてから、そのあと管理画面で設定するのがいいかな。

CakePHP: viewで使われる__(’文字列’)

CakePHP No Comments

view でやたら

__('文字列')

っていうのが出てくる(アンダーバー2つね)から何かと思ったら、 国際化のための関数らしい。

» CakePHP のおいしい食べ方: CakePHP1.2の簡単国際化

単語を置き換えるだけでいい部分は、これをやっとくといいかな。

CakePHP : formヘルパーで画面が真っ白になる

CakePHP 186 Comments

バージョン1.2.0.6311のバグかな?

formヘルパーで

$form->input('User/group_id', array(
    'type' => 'select',
    'options' => $groups,
    'selected' => $user['User']['group_id'],
));

などとしている場合、そもそも User.group_id が存在しなかったら renderしても画面が真っ白になる。

もちろん存在しないものを指定しようとしているのだからミスなんだけど、でも真っ白て。

原因を特定するのに手間取ってしまったのでメモ。