Я пытаюсь обновить запись с помощью метода CakePHP SaveAll(), но, однако, он добавляет новую строку вместо ее обновления.saveAll() вставляет новую строку вместо обновления
Моя модель, являются следующие: Магазин hasOne Карта
class Store extends AppModel {
var $name = 'Store';
var $hasOne = array(
'Map' => array(
'className' => 'Map',
'foreignKey' => 'store_id',
'dependent' => true,
'exclusive' => true
)
);
}
Моя форма редактирования имеет идентификатор магазина (скрытое поле), чтобы сказать CakePHP, чтобы обновить конкретную запись только.
<?php echo $this->Form->input('Store.id'); ?>
<?php echo $this->Form->input('Store.name', array('label' => 'Store name', 'required')); ?>
<?php echo $this->Form->input('Map.latlng', array('label' => 'Map location', 'required')); ?>
Мой метод редактирования в контроллере магазина следующий.
if ($this->Store->saveAll($this->data)) {
$this->Session->setFlash('Store has been updated.');
$this->redirect(array('controller' => 'store', 'action' => 'admin_index'));
}
Всякий раз, когда я изменить магазин, название магазина обновляется нормально, но CakePHP продолжает вставлять новую строку в таблице карт.
Я ничего не теряю здесь? Благодаря
Дополнительная информация
Мой отладки ($ this-> данные) являются следующие
Array
(
[Store] => Array
(
[id] => 52
[name] => Sena The Accessorizer
)
[Map] => Array
(
[latlng] => 3.1580681, 101.7126311
)
)
Показать отладку '$ this-> data' – Dunhamzzz
@Dunhamzzz вопрос обновлен. Спасибо –
@John - какова ваша форма-> создать? – Dave