在 save() 之后,Doctrine_Record 没有在对象中设置 PK

Posted

技术标签:

【中文标题】在 save() 之后,Doctrine_Record 没有在对象中设置 PK【英文标题】:Doctrine_Record doesn't set PK in object after save() 【发布时间】:2010-04-22 13:24:58 【问题描述】:

根据文档,保存后的 Doctrine_Record 应设置新创建记录的 id 作为对象属性。在我的例子中,创建了新记录,但没有在对象上设置值(而数据库有这个新的 id 值)。这是什么原因造成的?

$user1 = new ModelUsers();
$user1->save();
echo "last insert id=" . $user1->UserId;

PS UserId 在 Model 类中配置为'primary' => true, 'autoincrement' => true

【问题讨论】:

【参考方案1】:

您使用的是驼峰式语法,用于访问相关项目,如下所示:

$object->Related->getId();

访问 Doctrine_Record 属性时,您应该使用以下语法之一:

$object['user_id'];
$object->getUserId();
$object->user_id; // note that this is NOT camel case, but lowercase with underscores
$object->get('user_id');

【讨论】:

以上是关于在 save() 之后,Doctrine_Record 没有在对象中设置 PK的主要内容,如果未能解决你的问题,请参考以下文章

Django 在“model.save()”之后不更新 HTML 模板

在 Propel 中,我可以在 save() 之后选择要返回的字段吗

Rails 3 - 在model.save之后修改其他模型的属性

Django OneToOneField 通过在 save() 之后返回 None 来失去关系

Kohana 3.2 - ORM 的 pk() 方法在 save() (create()) 之后返回 false - 为啥?

Node.js Express 和 Mongoose,在 save() 之后渲染