ようこそゲストさん

CPA-LABテクニカル

2008/02/08(金) formヘルパーをテーブルなしモデルで使用するとエラーの回避方法CakePHP1.2b

はてブ情報 はてブに登録 はてブ数 cakephpspok
テーブルを使用しない、useTable=false;の時に、viewにてformヘルパーを使用すると以下のようなエラーがでる。(デバッグモード1以上)
(FormHelper::create) Unable to use model field data. If you are using a model without a database table, try implementing schema() [CORE\cake\libs\view\helpers\form.php, line 124]
(Model::getColumnType) Unable to locate model field data. If you are using a model without a database table, try implementing schema() [CORE\cake\libs\model\model.php, line 959]
なかなか日本語情報がなく、googleディスカッションで、なんとか手がかりをみつけた。
ようは、tableを使っていなくても、テーブルのスキーマ情報を登録しておけ、とのこと。
ただ、登録すべきスキーマ情報をどのようにすべきかの確たる情報がない。
で、以下のように最低限のスキーマ登録をやってみたら、エラーはでなくなった。

var $useTable=false;
var $_schema = array('id' => array('type' => 'integer'));



なお、googleディスカッションでは、開発責任者の方自らが、質問に答えていました。
nate

I'm guessing based on the error that you're trying to use a model
which is not attached to a table to create the form. In one of your
controllers, take a model that *is* attached to a table and try
something like the following:

pr($this->Model->schema());
die();


That should give you an idea on how to implement schema().
try implementing schema?
ようは、他のテーブルを使っているコントローラーでスキーマ情報をプリントアウトして、それを参考に、当該テーブルなしモデルでもスキーマを登録せよ、ということらしい。

Cake1.2bのお話。

名前:  非公開コメント   

  • TB-URL  http://www.cpa-lab.com/tech/057/tb/