Eliminar de varias tablas usando db_delete ()

Respuestas:

11

No puedes, tengo miedo.

db_delete()toma un solo parámetro de cadena para definir en qué tabla se ejecutará la consulta. No hay margen para proporcionar más de una tabla a la vez.

Sin embargo, puede ejecutar cualquier instrucción SQL que desee con db_query(), por ejemplo.

// Deletes all nodes and related author users...please don't actually run this!!
$sql = 'DELETE u, n FROM {node} n INNER JOIN {users} u ON u.uid = n.uid';
db_query($sql);
Clive
fuente
Eso db_deletetoma un solo parámetro, sin permitir un alias, es molesto. De lo contrario, sería posible usar JOINs similares a db_select.
Agi Hammerthief
0

Sí, db_delete toma un solo parámetro. Debe llamar db_delete()varias veces para eliminar datos de varias tablas. Por favor vea el siguiente código de muestra:

/**
 * Implements hook_menu_delete().
 */
function block_menu_delete($menu) {
  db_delete('block')
    ->condition('module', 'menu')
    ->condition('delta', $menu['menu_name'])
    ->execute();
  db_delete('block_role')
    ->condition('module', 'menu')
    ->condition('delta', $menu['menu_name'])
    ->execute();
}

Enlace de origen:
https://github.com/drupal/drupal/blob/7.x/modules/block/block.module
https://api.drupal.org/api/drupal/modules%21block%21block.module/ 7.x

johirpro
fuente