सरणी के रूप में केवल एक कॉलम मिलता है


87

लवलीन 5.2 में वाक्पटुता का उपयोग करके केवल एक स्तंभ को एक भिन्न सरणी के रूप में कैसे प्राप्त करें?

मैं प्रयास कर चुका हूं:

$array = Word_relation::select('word_two')->where('word_one', $word_id)->get()->toArray();

लेकिन यह इस तरह 2 dimentional सरणी के रूप में देता है:

array(2) {
      [0]=>
      array(1) {
        ["word_one"]=>
        int(2)
      }
      [1]=>
      array(1) {
        ["word_one"]=>
        int(3)
      }
    }

लेकिन मैं इसे प्राप्त करना चाहता हूं:

array(2) {
    [0]=>2
    [1]=>3
}

जवाबों:


190

आप pluckविधि का उपयोग कर सकते हैं :

Word_relation::where('word_one', $word_id)->pluck('word_two')->toArray();

संग्रह के साथ उपयोग करने के लिए कौन से तरीके उपलब्ध हैं, इसकी अधिक जानकारी के लिए, आप लारवेल डॉक्यूमेंटेशन देख सकते हैं ।


धन्यवाद, यह वह कार्य था जिसे मैंने कहीं देखा था, लेकिन इसे अब और रिकॉर्ड के लिए भी नहीं पाया, उत्तर के लिए, फिर से तैयार होने के लिए, फिर शायद जोड़ें -> toArray () क्योंकि यह पल में कोलिटेशन लौटाता है और चयन किया जा सकता है लार्वा 5.2 के लिए क्वेरी से कम से कम।
Riiwo

selectनिरर्थक होने के बारे में सच है , लेकिन मुझे परिणाम के रूप में एक संग्रह होने के साथ कोई समस्या नहीं दिखती है, क्योंकि एक संग्रह सिर्फ एक फैंसी सरणी है जो एक सरणी के समान ही पुनरावृत्त हो सकता है। मैं संग्रह के बजाय शायद ही कभी सरणियों का उपयोग करता हूं क्योंकि स्मृति पदचिह्न आमतौर पर एक समस्या नहीं है, और संग्रह को आसानी से सरणियों में डाला जा सकता है जहां उन्हें आवश्यकता होती है क्योंकि वे toArrayविधि को लागू करते हैं । हालाँकि, आपके प्रश्न की संगति के लिए, मैंने परिणाम को बदलने के लिए उत्तर को संशोधित किया।
बोगदान

इस समय मैं लार्वा और वाक्पटुता के लिए काफी नया हूं, इसलिए मुझे इनकी संख्या की जरूरत थी क्योंकि बाद में इसी तरह के एक के साथ सरणी को मर्ज करने और इसे किसी अन्य क्वेरी में उपयोग करने के लिए
Riiwo

इसे साझा करने के लिए आपको धन्यवाद!
भार्गव नानकेलवा

3
जबकि Collectionइसकी एक pluck()विधि भी है - आप जो प्रयोग कर रहे हैं वह एक विधि है QueryBuilder
पॉल स्पीगल

12

यदि आप कई प्रविष्टियाँ प्राप्त करते हैं तो सही विधि सूचियों को कहा जाता है

    Word_relation::select('word_two')->where('word_one', $word_id)->lists('word_one')->toArray();

2
बहुत बढ़िया! इसके lists()द्वारा ठीक काम करता है। धन्यवाद।
Moreirapontocom

1
बूम! यह पूरी तरह से काम करता है। लेकिन सूचियों () में एक सरणी लौटाने के कारण ऐरे () फ़ंक्शन का उपयोग करने की आवश्यकता नहीं है।
सहज

1
lists()Laravel Ver.5.2 में और बाद में, जहां pluck()टैग किए गए उत्तर के रूप में दर्शाया गया है, तरीका है।
मसा सकानो

8

यह संक्षेप में किया जा सकता है:

Model::pluck('column')

जहां मॉडल मॉडल है जैसे Userमॉडल और स्तंभ जैसे स्तंभ नाम जैसेid

यदि तुम करो

User::pluck('id') // [1,2,3, ...]

& निश्चित रूप से आपके पास whereप्लक से पहले क्लॉज जैसा कोई अन्य क्लॉज हो सकता है


6

मुझे यह सवाल आया और मैंने सोचा कि मैं स्पष्ट कर दूंगा कि लारवेल 5.2 में एक विलक्षण बिल्डर ऑब्जेक्ट की सूचियों () विधि को हटा दिया गया था और प्लक () के साथ बदल दिया गया था।

// <= Laravel 5.1
Word_relation::where('word_one', $word_id)->lists('word_one')->toArray();
// >= Laravel 5.2
Word_relation::where('word_one', $word_id)->pluck('word_one')->toArray();

इन तरीकों को उदाहरण के लिए एक संग्रह पर भी बुलाया जा सकता है

// <= Laravel 5.1
  $collection = Word_relation::where('word_one', $word_id)->get();
  $array = $collection->lists('word_one');

// >= Laravel 5.2
  $collection = Word_relation::where('word_one', $word_id)->get();
  $array = $collection->pluck('word_one');

-4

मुझे लगता है कि आप नीचे दिए गए कोड का उपयोग करके इसे प्राप्त कर सकते हैं

Model::get(['ColumnName'])->toArray();


क्या आप इसे समझा सकते हैं।
जे ... एस

1
जहाँ तक मुझे पता है कि ऐसा करने Model::get(['ColumnName'])->toArray();के बराबर है Model::select('ColumnName')->get()->toArray()जिसके परिणामस्वरूप एक बहु आयामी सरणी है।
सैमब्रीमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.