Видалити з кількох таблиць за допомогою db_delete ()


9

Як можна видалити поля з декількох таблиць за допомогою db_delete()та INNER JOINв Drupal 7?

Відповіді:


11

Ви не можете боюся.

db_delete()приймає параметр єдиного рядка, щоб визначити, до якої таблиці слід запустити запит. Немає можливості одночасно надати більше однієї таблиці.

Ви можете запустити будь-який вислів SQL, який вам подобається, хоча db_query(), наприклад , за допомогою , наприклад,

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

Прийняття db_deleteєдиного параметра, не дозволяючи псевдоніму, дратує. В іншому випадку можна буде використовувати JOIN, схожі на db_select.
Agi Hammerthief

0

Так, db_delete приймає один параметр. Щоб db_delete()видалити дані з кількох таблиць, вам потрібно зателефонувати кілька разів. Будь ласка, подивіться наступний зразок коду:

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

Джерело посилання:
https://github.com/drupal/drupal/blob/7.x/modules/block/block.module
https://api.drupal.org/api/drupal/modules%21block%21block.module/ 7.х

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.