Bagaimana kita bisa menghapus bidang dari beberapa tabel menggunakan db_delete()
dan INNER JOIN
di Drupal 7?
Bagaimana kita bisa menghapus bidang dari beberapa tabel menggunakan db_delete()
dan INNER JOIN
di Drupal 7?
Jawaban:
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);
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
db_delete
membutuhkan satu parameter, tanpa mengizinkan alias, menjengkelkan. Kalau tidak, akan mungkin untuk menggunakan GABUNGAN yang mirip dengan db_select.