どのように我々は、使用して複数のテーブルからフィールドを削除することができますdb_delete()
し、INNER JOIN
Drupalの7のか?
どのように我々は、使用して複数のテーブルからフィールドを削除することができますdb_delete()
し、INNER JOIN
Drupalの7のか?
回答:
恐れることはできません。
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_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
db_delete
は、エイリアスを許可せずに単一のパラメーターを受け取り、煩わしいです。それ以外の場合は、db_selectと同様のJOINを使用できます。