Kohana 3 ORM检索最后一个插入ID

Posted

技术标签:

【中文标题】Kohana 3 ORM检索最后一个插入ID【英文标题】:Kohana 3 ORM retrieve last insert ID 【发布时间】:2012-01-14 20:22:26 【问题描述】:

在 ->save() 调用之后有没有办法获取最后一个插入 id?

示例代码:

$post_data = $_POST;
$user = ORM::factory('user');
$user->username = $post_data['username'];
$user->email = $post_data['email'];
$user->save();

【问题讨论】:

【参考方案1】:

当然,假设您的插入代码如下所示:

$user = ORM::factory('user')->values($post)->save();

要获取最后一个插入 ID,只需在调用 ->save() 之后执行此操作

echo $user->id;

在您的情况下,您需要执行 $user->user_id,因为您已将主键命名为 user_id

我会建议 biakaveron 的建议改为使用 $user->pk(),因为它总是会返回主键的值,而不管赋予它的名称如何,前提是您在模型中使用 $_primary_key 指定主键名称。

如果插入有效,模型将填充已保存的值以供重复使用。

任务完成!

【讨论】:

我更新了我的问题...并且 $user->id 给了我一个错误。 Model_User 类中不存在 id 属性。但我可以通过调用 $user->pk() 来获取最后一个插入 ID。 你的用户表是否有一个名为id的主键? 我的模型用户表:Class Model_User extends ORM protected $_primary_key = 'user_id'; 这就是为什么你应该总是使用->pk()而不是->id 我已经更新了我的答案。 @biakaveron 谢谢你的建议。【参考方案2】:

只需致电$model->id; - ORM 将为您完成最后的插入 id 包含。

【讨论】:

以上是关于Kohana 3 ORM检索最后一个插入ID的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kohana 3 ORM 关系中指定两个键

kohana orm3中的多插入

Kohana 3 ORM 中的嵌套关​​系

Kohana 3.2 ORM 不包含模型信息

ORM 关系(可能是 Kohana 特定的)

如何使用 Auth 模块从 Kohana 3 中检索所有用户和所有角色?