Drupal db_transaction 使用范式详解

作者:袖梨 2022-06-24

$transaction = isset($transaction) ? $transaction : db_transaction();
 
try {
  $ids = array_keys($entities);
 
  db_delete($this->entityInfo['base table'])
    ->condition($this->idKey, $ids, 'IN')
    ->execute();
 
  if (isset($this->revisionTable)) {
    db_delete($this->revisionTable)
      ->condition($this->idKey, $ids, 'IN')
      ->execute();
  }
  // Reset the cache as soon as the changes have been applied.
  $this->resetCache($ids);
 
  foreach ($entities as $id => $entity) {
    $this->invoke('delete', $entity);
  }
  // Ignore slave server temporarily.
  db_ignore_slave();
}
catch (Exception $e) {
  $transaction->rollback();
  watchdog_exception($this->entityType, $e);
  throw $e;
}

以上代码片段为使用db_transaction范式。摘抄自entity模块。

 

相关文章

精彩推荐