Wie können wir mit db_delete()
und INNER JOIN
in Drupal 7 Felder aus mehreren Tabellen löschen ?
Wie können wir mit db_delete()
und INNER JOIN
in Drupal 7 Felder aus mehreren Tabellen löschen ?
Antworten:
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);
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.
db_delete
braucht einen einzigen Parameter, ohne einen Alias zuzulassen, ist ärgerlich. Andernfalls könnten JOINs ähnlich wie db_select verwendet werden.