false の逆が true とは限らない。
CakePHP v2.4.6
チュートリアルの一部の動作結果について調べたいことができた。
以前にチュートリアルで使った環境はいろいろいじくり回してあったので、
前に作った、使いやすいように解凍後の状態に一部修正を加えた Cake のソース郡
を用いてチュートリアルのコードを走らせたところ、以下の様なエラーが出た。
Table 1 for model Post was not found in datasource default.
「Post」ってのはこの環境固有のものなので、「Post」以下で検索をかけた。
すると、キャッシュの問題だという記事を見つけた。
http://blog.katty.in/2054
http://blog.gti.jp/cakephp%E3%81%AB%E3%81%BE%E3%81%9F%E3%80%80%E3%81%97%E3%81%A6%E3%82%84%E3%82%89%E3%82%8C%E3%81%9F%E3%83%BB%E3%83%BB%E3%83%BB-missingtableexception/
しかし app/tmp/cache/models/ のファイルを削除しても結果は変わらなかった。
しかたないので「Table 1 for model」の方で検索したが、IRC のログと CakePHP の
フランス用の掲示板の記事しかみつからなった。 フランス語は読めないし、
IRC の方も解答は出ていなかった。
そこで解凍直後のプレインな cake のディレクトリと、手を加えた方のディレクトリを
比較したら答えは見つかった。
以前にテーブルを使用せずに動かしたい事があり、また同じことがあるだろうと
上で使用している、コピー用の AppModel に以下の様なコードを記述した。
var $useTable = true; // DB を使わない場合は false
テーブルを使わない場合は $useTable を false にするということを知り、
これが「テーブルを利用する or しない」を判別するための真偽値だと思って
こういう記述をした。
しかし $useTable は真偽値型の変数ではなく、使用するテーブル名を指定する
変数だったため、true = 1 と解釈され、エラーメッセージの Table 1
につながった。
文字列型が空と指定する時は NULL やら \0 やら "" を入れるという先入観か
あったため、結構ハマってしまった。