如何在 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 中保存继承的对象的主要内容,如果未能解决你的问题,请参考以下文章