Xóa khỏi nhiều bảng bằng db_delete ()


9

Làm cách nào chúng ta có thể xóa các trường khỏi nhiều bảng bằng db_delete()INNER JOINtrong Drupal 7?

Câu trả lời:


11

Bạn không thể sợ.

db_delete()lấy một tham số chuỗi đơn để xác định bảng nào sẽ chạy truy vấn. Không có phạm vi để cung cấp nhiều hơn một bảng cùng một lúc.

Bạn có thể chạy bất kỳ câu lệnh SQL nào bạn thích, tuy nhiên, với db_query(), vd.

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

Điều đó db_deletecó một tham số duy nhất, mà không cho phép một bí danh, là gây phiền nhiễu. Nếu không, có thể sử dụng THAM GIA tương tự như db_select.
Búa búa Agi

0

Có, db_delete có một tham số duy nhất. Bạn phải gọi db_delete()nhiều lần để xóa dữ liệu từ nhiều bảng. Vui lòng xem mã mẫu sau:

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

Liên kết nguồn:
https://github.com/drupal/drupal/blob/7.x/modules/block/block.module
https://api.drupal.org/api/drupal/modules%21block%21block.module/ 7.x

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.