Drupal 7 ile db_delete()
ve kullanarak birden çok tablodan alanları nasıl silebiliriz INNER JOIN
?
Drupal 7 ile db_delete()
ve kullanarak birden çok tablodan alanları nasıl silebiliriz INNER JOIN
?
Yanıtlar:
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);
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
db_delete
bir 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.