CakePHPで「Warning (2): Illegal offset type」が出てたので調べた
CakePHPで画面を開発しているのですが、開発環境で画面に「Warning (2): Illegal offset type・・・」なんて出てるみたいだったので、ちょっと見てた。
原因
このメッセージは何かというと、PHPの配列に関するエラーで、連想配列のキーに「配列」を指定したら発生します。
配列またはオブジェクトをキーとして使用することはできません。 これを行なうと、warning: Illegal offset type が発生します。
PHP: 配列 - Manual
発生している箇所
画面のエラー文言の詳細を見ると、(CakePHPの基盤クラス)「Model::setSource()」のXX行目で発生しているようなので、そこを見てみると、
$this->table = $this->useTable = $tableName; $this->tableToModel[$this->table] = $this->alias;
つまり、「tableToModel」という配列の「$this->table」に配列が入ってしまっているらしい。
で、各テーブル用のModelクラスを見ると「$useTable」変数に、配列形式で指定してしまっている。。これが、影響しているに違いない。
var $useTable = array('users');
そこで、次のように修正すると、直りました。
var $useTable = 'users';
なぜ、こんな記述にしたんだろうか。。わからん。
ちなみに
core.phpの設定で、Debugモードだと、画面とログの両方にエラー出力されるが、
Configure::write('debug', 2); // Debugモード
本番モードの設定であれば、画面にもログにも出力されない。
Configure::write('debug', 0); // 本番モード