एक एंटीक्यू से आइटम प्राप्त करने का उपयुक्त तरीका क्या है?


9

मुझे Drupal 8 में एंटीक्यू के लिए एपीआई उदाहरण खोजने में परेशानी हो रही थी।

मैंने आइटम प्राप्त करने के लिए एक प्रश्न लिखना समाप्त कर दिया।

$query = $this->database->select('entity_subqueue__items', 'esi')
  ->fields('esi', array('items_target_id'))
  ->condition('esi.bundle', $name_of_queue)
  ->orderBy('delta', 'ASC');

$nids = $query->execute()->fetchCol();

लेकिन यदि संभव हो तो मैं एक फंक्शन में बिल्ट का उपयोग करना चाहता हूं। इकाई कतार से आइटम पुनर्प्राप्त करने का कार्य कहां है?


D7 - \ Drupal :: queue ('my queue') -> ClaItem ()

मुझे नहीं लगता कि ऐसा ही है। टेबल क्यू है, जो डेटाबेसक्यूयू ऑब्जेक्ट का उपयोग करता है। यह एनस्क्यू मॉड्यूल है। मैंने आपके उदाहरण की कोशिश की, और यह काम नहीं करता है, और कोड में खुदाई करने पर ऐसा लगता है कि DatabaseQueue ऑब्जेक्ट "नाम" जैसे स्तंभों वाली एक तालिका को देख रहा है, जो Unit_subqueue__items तालिका से गायब हैं।
oknate

क्षमा करें, मैं एंटिक्यू मॉड्यूल का उपयोग नहीं करता हूं।

जवाबों:


12

$ फुट दिए जाने पर आपका सबकुछ आईडी है:

$entity_subqueue = \Drupal::entityManager()->getStorage('entity_subqueue')->load($sid);

सबड्यू ऑब्जेक्ट को लोड करता है। आप अपने निकाय को पुनः प्राप्त या अद्यतन करने के लिए इसमें हेरफेर कर सकते हैं।

आइटम प्राप्त करने के लिए:

$items = $entity_subqueue->get('items')->getValue();

आइटम को अपडेट करने के लिए, $ आइटम सरणी में एक और आइटम जोड़ें और फिर इकाई ऑब्जेक्ट को सहेजें:

$items[] = ['target_id' => 69];

$entity_subqueue->set('items', $items);

$entity_subqueue->save();

देखा!

आप डेटाबेस में देख सकते हैं कि आपकी इकाई कतार अपडेट है:

select * from entity_subqueue__items where bundle = :sid;

मैं यह भी जोड़ना चाहूंगा कि Drupal 8: कॉन्फ़िग पेज मॉड्यूल में एंटीक्यू का उपयोग करने का एक बढ़िया विकल्प है । यह आपको इकाई बंडल बनाने की अनुमति देता है जिसमें केवल एक इकाई है। फिर आप इकाई संदर्भ क्षेत्रों सहित अपनी पसंद के अनुसार कोई भी फ़ील्ड जोड़ सकते हैं। मैंने हाल ही में एक परियोजना पर एक इकाई कतार को एक इकाई के संदर्भ क्षेत्र के साथ एक कॉन्फ़िगर पृष्ठ के साथ बदल दिया, और मैंने उपयोगकर्ता अनुभव को प्राथमिकता दी।


0

सबकुछ लोड करने के लिए एक शॉर्टकट भी है: \Drupal\entityqueue\Entity\EntitySubqueue::load($sid);

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