Db_delete () का उपयोग करके कई टेबल्स से हटाएं


9

हम का उपयोग कर कई तालिकाओं से खेतों कैसे हटा सकते हैं db_delete()और INNER JOINDrupal 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एक एकल पैरामीटर लेता है, एक उपनाम की अनुमति के बिना, कष्टप्रद है। अन्यथा, यह db_select के समान JOINs का उपयोग करना संभव होगा।
आजी हैमरथिफ

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.