這是關於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