【问题标题】:Kohana 3 ORM retrieve last insert IDKohana 3 ORM检索最后一个插入ID
【发布时间】:2026-01-01 03:25:02
【问题描述】:

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

示例代码:

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

【问题讨论】:

    标签: orm kohana kohana-3 lastinsertid


    【解决方案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 包含。

    【讨论】: