我有一个包含相关数据的实体,我希望将其保存在新记录中。
我试试看:
$newTour = $this->Tours->get($id, ['contain' => ['Cities', 'Tags']]);
$newTour->set('id', null);
$this->Tours->save($newTour);
但我看到了这个错误:
更新
需要所有主键值
我该怎么办?
答案 0 :(得分:4)
通过get()
或find()
检索到的实体将设置为非新内容,这会导致它们在更新时结束 - 而不是在保存时插入进程。
如果要将它们作为新记录插入,则必须将它们标记为新记录,另外要取消设置主键。
// ...
$newTour->isNew(true);
$newTour->unsetProperty('id');
// ...
另见
答案 1 :(得分:2)
而不是$newTour->set('id', null);
使用$newTour->unsetProperty('id');