Это довольно простой вопрос о CakePHP, но поскольку мои знания об этой структуре довольно ржавые, это заставляет меня терять много времени.Работа с родственной моделью в CakePHP
У меня есть отношение ManyToMany между Guest
и Present
. Всякий раз, когда новый Гость создается и ассоциируется с подарком, я хотел бы отметить Присутствие как взятое. Если настоящее уже сделано, возникает некоторая ошибка. Причина, почему я не просто заявляю, что Гость имеет множество подарков, потому что в будущем все может измениться, и более одного гостя может ассоциироваться с настоящим, поэтому я предпочитаю избегать миграции Db.
My Guest::add()
Действие выглядит следующим образом. Он вызывается с POST с данными нового гостя и идентификатором существующего настоящего.
public function add() {
if ($this->request->is('post')) {
$id = $this->request->data['Present']['id'];
$this->Guest->create();
$present = $this->Guest->Present->findById($id);
if ($present['Present']['taken']) {
throw new ForbiddenException();
}
if ($this->Guest->save($this->request->data)) {
if ($this->Guest->Present->saveField('taken', true)) {
// Give the guest a uuid and proceed with a welcome message
$this->Guest->read();
$this->set('uuid', $this->Guest->data['Guest']['uuid']);
}
}
}
else {
throw new ForbiddenException();
}
}
Что происходит, что новый гость создается (правильный) и связанный с данным присутствуют (правильно), но когда я сохранить taken
поля нового настоящее создано вместо модификации данного.
Каков правильный способ для обновления текущего настоящего?
Если какой-либо помощи, я использую CakePHP 2.0