addに関する事


addでデータベースを更新しようとしたら
Duplicate entry '0' for key 'PRIMARY'
というエラーが出て更新できませんでした

重複しているから0はもう登録できませんよ。ということみたいです。



cakePHPの規約で
データベースに、一意の番号を付けて登録する際
名前は「id」、型 は 「INT」 、 属性は「UNSIGNED
AUTO_INCREMENTPRIMARY 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
未定義のプロパティ

早くエラーが自力で読めるようになりたいです。