这是关于CakePHP的一个相当基本的问题,但是由于我对这个框架的知识相当生疏,这让我失去了很多时间。在CakePHP中使用相关模型
我在Guest
和Present
之间有一个ManyToMany关系。无论何时创建新访客并与礼物相关联,我都希望将礼物标记为已采用。如果现在已经被采用,则会出现一些错误。我之所以不只是宣称嘉宾有许多礼物,是因为将来事情可能会改变,并且不止一位嘉宾可能会与某个礼物相关联,所以我更愿意避免Db迁移。
我的Guest::add()
动作如下所示。它用一个POST来调用一个新的Guest的数据和一个存在的Present的id。
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