【发布时间】:2012-11-09 22:49:53
【问题描述】:
在 Kohana 中使用子查询时如何返回正确的 $insert_id?
我使用查询方法返回$insert_id 和$affected_rows。它为 $affected_rows 返回正确的值,但为不正确的 $insert_id 返回“1”。
以下查询:
$sub = DB::select('id', 'username', 'email', 'lastVisitDate')->from('jos_users');
$qry_migrate_users = DB::insert('temp_users', array('old_id', 'username', 'email_work', 'last_login'))->select($sub);
list($insert_id, $affected_rows) = $qry_migrate_users->execute($this->conn_target);
【问题讨论】:
-
请注意,MySQL 返回 first 插入行的最后插入 id。
-
我怀疑但不确定。我推测是因为我使用的是子查询,所以没有办法实际返回最后一个插入 id?
-
当然,您可以使用
old_id值从temp_users中选择新行并获取最大id。但是为什么你需要最后一个插入 id? -
插入 id 存储在另一个表中,以便在从 jos_users 表中进一步迁移新用户时参考。我应该更好地表达我的回应。我可以获得最后一个插入 id,但想知道为什么它不能通过 Kohana 建议的方法工作。正如您所说,它正在为第一行返回正确的值。感谢您的澄清!
标签: subquery kohana lastinsertid