Db_delete () kullanarak Birden Çok Tablodan Sil


9

Drupal 7 ile db_delete()ve kullanarak birden çok tablodan alanları nasıl silebiliriz INNER JOIN?

Yanıtlar:


11

Korkarım.

db_delete()sorgunun hangi tabloya karşı çalıştırılacağını tanımlamak için tek bir dize parametresi alır. Bir seferde birden fazla tablo sunmanın kapsamı yoktur.

İstediğiniz herhangi bir SQL ifadesini db_query(), örn.

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

Yani db_deletebir takma ad izin vermeden, can sıkıcı, tek bir parametre alır. Aksi takdirde, db_select benzeri JOIN'leri kullanmak mümkün olacaktır.
Agi Hammerthief

0

Evet, db_delete tek bir parametre alır. db_delete()Birden çok tablodan veri silmek için birden çok kez aramanız gerekir . Lütfen aşağıdaki örnek kodlara bakın:

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

Kaynak bağlantı:
https://github.com/drupal/drupal/blob/7.x/modules/block/block.module
https://api.drupal.org/api/drupal/modules%21block%21block.module/ 7.x

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.