cakephp 3如何从现有实体创建新记录

时间:2015-09-21 03:46:18

标签: cakephp cakephp-3.0

我有一个包含相关数据的实体,我希望将其保存在新记录中。

我试试看:

$newTour = $this->Tours->get($id, ['contain' => ['Cities', 'Tags']]);
$newTour->set('id', null);
$this->Tours->save($newTour);

但我看到了这个错误:

  

更新

需要所有主键值

我该怎么办?

2 个答案:

答案 0 :(得分:4)

通过get()find()检索到的实体将设置为非新内容,这会导致它们在更新时结束 - 而不是在保存时插入进程。

如果要将它们作为新记录插入,则必须将它们标记为新记录,另外要取消设置主键。

// ...
$newTour->isNew(true);
$newTour->unsetProperty('id');
// ...

另见

答案 1 :(得分:2)

而不是$newTour->set('id', null);使用$newTour->unsetProperty('id');

取消设置属性