0

使用 db_merge 时,如果进行了 INSERT,则似乎无法检索最后一个插入 ID。

如果进行了插入,则 MergeQuery::execute() 返回 MergeQuery::STATUS_INSERT,而不是像 InsertQuery::execute() 那样返回插入 ID。

使用 db_merge 时是否有一种优雅的方法来检索最后一个插入 ID?

资料来源: http : //api.drupal.org/api/drupal/includes--database--query.inc/function/MergeQuery%3A%3Aexecute/7 http://api.drupal.org/api/drupal/includes --database--query.inc/function/MergeQuery%3A%3Aexecute/7

4

1 回答 1

0

编辑:已解决。modules/simpletest/tests/database_test.test 包含一个解决方案,我们使用已知值重新查询数据库以检索记录并获取它的 ID。似乎仍然很奇怪,没有更简单的方法来获取最后一个插入 ID,但这适用于我的目的。

$result = db_merge('test_people')
  ->key(array('job' => 'Presenter'))
  ->fields(array(
    'age' => 31,
    'name' => 'Tiffany',
  ))
  ->execute();
$person = db_query('SELECT * FROM {test_people} WHERE job = :job', array(':job' => 'Presenter'))->fetch();
$last_insert_id = $person->id; // Core test does not actually include an ID, but this is how it could work
于 2011-07-29T14:37:05.487 回答