如何在 cakephp 中保存继承的对象

Posted

技术标签:

【中文标题】如何在 cakephp 中保存继承的对象【英文标题】:How to save inherited objects in cakephp 【发布时间】:2012-06-14 10:07:29 【问题描述】:

我已经在 cakephp 中实现了继承。我有两个模型 Person 和 Employee。员工继承人

Person: id, name, age, address
Employee: id, person_id

当我执行 $this->Employee->savAll($this->request->data) 时,Person 和 Employee 正在保存,但 person_id 没有设置 在数据库中,它被NULL填充,有什么方法可以一次正确保存继承的对象,模型如下所示

Class Person extends AppModel
 var $name="Person";


App::import('model', 'Person')
Class Employee extends Person
  var $name="Employee";
  public $actsAs = array( 'Inherit' ); 

【问题讨论】:

我认为您可能正在混合继承和关系。但我不熟悉您似乎正在使用的 InheritableBehavior。这是 CakeDC 的吗? github.com/CakeDC/utils/blob/master/Model/Behavior/… 不,它是正确的继承,我无法将 person_id 保存在 Employee 表中。我关注了bakery.cakephp.org/articles/view/… 文章。 奇怪,那个链接对我来说坏了,谷歌缓存只有一个(机器)翻译的德语版本...... 对不起,这是链接bakery.cakephp.org/articles/santino83/2011/02/19/… 所以你可能想定义你的关联。员工属于个人。 【参考方案1】:

来自Saving Your Data 文档,

saveAll 函数只是 saveMany 和 saveAssociated 方法的封装

您既没有保存多个模型,也没有保存关联模型。您需要保存父模型,检索 ID,然后使用它来保存继承模型。

【讨论】:

以上是关于如何在 cakephp 中保存继承的对象的主要内容,如果未能解决你的问题,请参考以下文章

在 CakePHP 中保存时如何验证关联模型是不是存在

CakePHP - 如何在保存时将关联记录添加到模型中?

如何在 CakePHP 中保存相关数据?

如何在 CakePHP 3.x 中保存 belongsToMany 以进行编辑操作?

cakephp 如何使用一个日期和时间间隔创建和保存表单

CakePHP 3如何使用REST以正确的方式保存相关关联1:N?