私はPage
モデルとモデルを持っていCategory
ます。基本的に、各ページはカテゴリに属しています。Page belongsTo Category
モデルは、およびのように設定されていCategory hasMany Page
ます。
新しいページを追加するときは、次のコントローラー アクションを使用しています。
public function admin_add() {
if($this->request->is('post')) {
$this->Page->create();
if($this->Page->saveAssocated($this->request->data)) {
$this->Session->setFlash('The page has been created.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to save the page.');
}
}
}
これはそのアクションのビューです:
<h1>Add Page</h1>
<?php
echo $this->Form->create('Page');
echo $this->Form->input('Page.title', array('required' => 'required'));
echo $this->Form->input('Page.body', array('type' => 'textarea', 'class' => 'redactor', 'required' => 'required'));
echo $this->Form->input('Category.name');
echo $this->Form->input('Page.in_header');
echo $this->Form->end('Save Page');
?>
これで、「サービス」をカテゴリとしてページを保存すると、すべて正しく保存されるようになりました。ページが保存されname
、「サービス」のカテゴリが挿入され、両方が適切にリンクされます。
ただし、「サービス」の同じカテゴリを持つ別のページを追加すると、categories
テーブル内の既存のレコードを使用する代わりに、Cake は新しいレコードを作成し、代わりにそのレコードをリンクします。既存のレコードを使用するために必要です。
ビュー/コントローラー/データベースを修正して、これを正しく機能させるにはどうすればよいですか?
ありがとう!