जवाबों:
entity_load
@ निखिल द्वारा उल्लिखित इकाई को लोड करने के लिए उपयोग करें ।
फिर बंडल को निकालने के लिए Unit_extract_ids का उपयोग करें । उदाहरण:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
फ़ंक्शन entity_extract_ids
तत्वों सहित एक संख्यात्मक रूप से अनुक्रमित सरणी (हैश तालिका नहीं) देता है:
जहां, 0
, 1
, और 2
सरणी सूचकांक कर रहे हैं। हालांकि, कोर और कंट्राब मॉड्यूल द्वारा उपयोग किया जाने वाला दृष्टिकोण list()
फ़ंक्शन का उपयोग करना है।
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
यहाँ सबसे साफ है जो मुझे कार्बनिक समूहों के मॉड्यूल कोड से मिला है।
$wrapper = entity_metadata_wrapper($entity_type, $entity_id);
$bundle = $wrapper->getBundle();
उदाहरण के लिए मैं इसे कॉल कर सकता हूं जैसे:
$wrapper = entity_metadata_wrapper('node', 1);
$bundle = $wrapper->getBundle();
संपादित करें: जैसा कि @Clive ने बताया है, उपरोक्त विधि इकाई मॉड्यूल पर निर्भर करती है।
यहां एक और तरीका है जो किसी भी अतिरिक्त मॉड्यूल पर निर्भर नहीं करता है। इसे यहाँ समझाया गया है https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
उस विधि को कॉपी करते हुए कॉपी करें:
function _entity_get_bundle($entity, $entity_type) {
$info = entity_get_info($entity_type);
if (empty($info['entity keys']['bundle'])) {
return $entity_type;
} else {
return $entity->{$info['entity keys']['bundle']};
}
}
$group_type, $gid
? और इसमें क्या मूल्य है $bundle
?
entity_load
, जिस तरह से यह सबसे साफ है?
entity_metadata_wrapper()
यह entity_extract_ids()
विधि की तुलना में साफ है । इसके अलावा आप इकाई मॉड्यूल पर भरोसा स्थापित किया जा रहा ...
इकाई_ लोड करने का प्रयास करें
डेटाबेस से लोड संस्थाओं।
इकाइयाँ स्टैटिक मेमोरी कैश में संग्रहित होती हैं, और उसी पृष्ठ अनुरोध के दौरान दोबारा लोड होने पर डेटाबेस एक्सेस की आवश्यकता नहीं होगी।
$ Unit_type : इकाई प्रकार को लोड करने के लिए, जैसे नोड या उपयोगकर्ता।
$ आईडी : सभी संस्थाओं को लोड करने के लिए इकाई आईडी, या FALSE की एक सरणी।
$ स्थितियां : (पदावनत) आधार तालिका पर शर्तों की एक साहचर्य सारणी है, जहां कुंजी डेटाबेस फ़ील्ड हैं और मान वे मान हैं जो उन फ़ील्ड में होने चाहिए। इसके बजाय, इस फ़ंक्शन द्वारा लोड की जाने वाली इकाई आईडी की सूची को पुनः प्राप्त करने के लिए EntityFieldQuery का उपयोग करना बेहतर है।
$ रीसेट : अनुरोधित निकाय प्रकार के लिए आंतरिक कैश रीसेट करना है या नहीं।
इकाई वस्तुओं की एक सरणी उनके आईडी द्वारा अनुक्रमित। जब कोई परिणाम नहीं मिलता है, तो एक खाली सरणी वापस आ जाती है।
यदि आप नोड आईडी से नोड प्रकार प्राप्त करने के लिए एक बहुत ही हल्का तरीका, प्रदर्शन-वार चाहते हैं - तो आप नोड टेबल पर एक ही चुनिंदा क्वेरी का उपयोग कर सकते हैं।
$type = db_query("SELECT type FROM {node} WHERE nid = :nid",
array(':nid' => $nid))->fetchField();
इस तरह, आपको संपूर्ण इकाई हुक प्रणाली, इकाई_ लोड आदि के साथ आह्वान करने की आवश्यकता नहीं है।
यह अनुक्रमित नोड आईडी का उपयोग करके एक एकल चयनित क्वेरी है।