db_delete ()를 사용하여 여러 테이블에서 삭제


9

우리는 어떻게 사용하여 여러 테이블에서 필드를 삭제할 수 있습니다 db_delete()INNER JOIN드루팔 7을?

답변:


11

당신은 내가 두려워 할 수 없습니다.

db_delete()쿼리를 실행할 테이블을 정의하기 위해 단일 문자열 매개 변수를 사용합니다. 한 번에 둘 이상의 테이블을 제공 할 범위가 없습니다.

db_query()예를 들어 원하는 SQL 문을 예를 들어 실행할 수 있습니다 .

// 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별칭을 허용하지 않고, 짜증나는, 하나의 매개 변수를 사용합니다. 그렇지 않으면 db_select와 유사한 JOIN을 사용할 수 있습니다.
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.x

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.