Elimina da più tabelle utilizzando db_delete ()


9

Come possiamo eliminare campi da più tabelle usando db_delete()e INNER JOINin Drupal 7?

Risposte:


11

Non puoi aver paura.

db_delete()accetta un singolo parametro stringa per definire su quale tabella deve essere eseguita la query. Non c'è spazio per fornire più di una tabella alla volta.

Puoi eseguire qualsiasi istruzione SQL che ti piace, tuttavia, ad db_query()es.

// 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);

Questo db_deleterichiede un singolo parametro, senza consentire un alias, è fastidioso. Altrimenti, sarebbe possibile usare JOINs simili a db_select.
Agi Hammerthief,

0

Sì, db_delete accetta un singolo parametro. È necessario chiamare db_delete()più volte per eliminare i dati da più tabelle. Si prega di consultare il seguente codice di esempio:

/**
 * 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();
}

Link alla fonte:
https://github.com/drupal/drupal/blob/7.x/modules/block/block.module
https://api.drupal.org/api/drupal/modules%21block%21block.module/ 7.x

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.