У меня есть модель Page
и модель Category
. В принципе, каждая страница относится к категории. Модели настроены так Page belongsTo Category
, и Category hasMany Page
.hasOne отношения сохранение новой записи вместо существующей
При добавлении новых страниц, я использую это действие контроллера:
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
Торт делает новую и связывает ее. Мне нужно, чтобы он использовал существующую запись.
Как я могу исправить свой просмотр/контроллер/базу данных, чтобы сделать это правильно?
Спасибо!
Хорошо, поэтому в моем контроллере, прежде чем я сохраню страницу, я должен запустить проверку, существует ли категория, и если да, добавьте ее в '$ this-> request-> data'? –
Да, это один из способов сделать это ... Вы также можете добавить раскрывающийся список в представление, чтобы пользователь мог выбрать существующую категорию, и если значение, которое они хотят, отсутствует, они могут указать имя новый. Реализация может быть в любом случае, важно указать ID;) – pollirrata