हम का उपयोग कर कई तालिकाओं से खेतों कैसे हटा सकते हैं db_delete()और INNER JOINDrupal 7 में?
हम का उपयोग कर कई तालिकाओं से खेतों कैसे हटा सकते हैं db_delete()और INNER JOINDrupal 7 में?
जवाबों:
तुम मुझे डर नहीं सकते।
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 एक एकल पैरामीटर लेता है। आपको 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 के समान JOINs का उपयोग करना संभव होगा।