addに関する事
addでデータベースを更新しようとしたら
Duplicate entry '0' for key 'PRIMARY'
というエラーが出て更新できませんでした
重複しているから0はもう登録できませんよ。ということみたいです。
cakePHPの規約で
データベースに、一意の番号を付けて登録する際
名前は「id」、型 は 「INT」 、 属性は「UNSIGNED 」
AUTO_INCREMENT と PRIMARY KEY を指定しなければいけないようです。
私はphpmyAdminを使用しているので、idはこんな感じに作成すればいいと思います。
AUTO_INCREMENTとは、自動連番で登録してくれる便利なものらしいです。
なので、idを空で登録しても、自動的にid=5の次はid=6と振ってくれるみたいです。
addで必須入力をさせたい場合はモデルにこんな感じで記述する
array(
"rule" => 'notEmpty'
),
'body' => array(
"rule" => 'notEmpty'
)
);
}
?>その他データバリデーション参考リンク
http://book.cakephp.org/ja/view/125/data-validation
ビューでフォームヘルパーのselect使ってみた
$form->select('name', array);
となりますが、arrayの部分をつくるのがめんどくさそうです。
探してみるとデータベースからとってこれる手っ取り早い方法がありました。
モデルに記述します。
Set::Combine($this->find('all'), '{n}.Model.id', '{n}.Model.name');
これで、idがキーになり、nameが値になる連想配列ができあがります
たとえば私の環境なら
ビュー
echo $form->select('states', $data);モデル
function statescombo(){
$result = Set::combine($this->find('all'), '{n}.Shop.states', '{n}.Shop.states');
return $result;
}っていう感じで、コントローラに値を渡して使いました。
英語
Undefined variable
未定義の変数Undefined property
未定義のプロパティ早くエラーが自力で読めるようになりたいです。