Mit db_delete () aus mehreren Tabellen löschen

9

Wie können wir mit db_delete()und INNER JOINin Drupal 7 Felder aus mehreren Tabellen löschen ?

Shruti
quelle

Antworten:

11

Du kannst nicht, fürchte ich.

db_delete()verwendet einen einzelnen Zeichenfolgenparameter, um zu definieren, für welche Tabelle die Abfrage ausgeführt werden soll. Es gibt keinen Bereich, in dem mehr als eine Tabelle gleichzeitig bereitgestellt werden kann.

Sie können jedoch eine beliebige SQL-Anweisung ausführen db_query(), z.

// 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
quelle
Das db_deletebraucht einen einzigen Parameter, ohne einen Alias ​​zuzulassen, ist ärgerlich. Andernfalls könnten JOINs ähnlich wie db_select verwendet werden.
Agi Hammerthief
0

Ja, db_delete akzeptiert einen einzelnen Parameter. Sie müssen db_delete()mehrmals aufrufen , um Daten aus mehreren Tabellen zu löschen. Bitte beachten Sie den folgenden Beispielcode:

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

Quelllink:
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
quelle