0

db_mergeを使用する場合、INSERTが行われた場合、最後の挿入IDを取得できないようです。

MergeQuery :: execute()は、InsertQuery :: execute()のように挿入IDではなく、挿入が行われた場合にMergeQuery::STATUS_INSERTを返します。

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 --データベース--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 に答える