Hapus dari Beberapa Tabel menggunakan db_delete ()


9

Bagaimana kita bisa menghapus bidang dari beberapa tabel menggunakan db_delete()dan INNER JOINdi Drupal 7?

Jawaban:


11

Kamu tidak bisa, aku takut.

db_delete()mengambil parameter string tunggal untuk menentukan tabel mana yang harus dijalankan oleh query. Tidak ada ruang untuk menyediakan lebih dari satu tabel sekaligus.

Anda dapat menjalankan pernyataan SQL apa pun yang Anda suka, dengan db_query(), misalnya.

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

Itu db_deletemembutuhkan satu parameter, tanpa mengizinkan alias, menjengkelkan. Kalau tidak, akan mungkin untuk menggunakan GABUNGAN yang mirip dengan db_select.
Agi Hammerthief

0

Ya, db_delete mengambil satu parameter. Anda harus menelepon db_delete()beberapa kali untuk menghapus data dari beberapa tabel. Silakan lihat kode contoh berikut:

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

Tautan sumber:
https://github.com/drupal/drupal/blob/7.x/modules/block/block.module
https://api.drupal.org/api/drupal/modules%21block%21block.module/ 7.x

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.