2012-10-02 14 views
5

मैं मौजूदा सरणी चर में नए सरणी आइटम को धक्का देने की कोशिश कर रहा हूं जिसमें डेटाबेस से आइटम हैं। मैं जो करना चाहता हूं वह इस सरणी के अंत में 'अन्य' नामक एक नया आइटम जोड़ना है और इसे चुनने के रूप में प्रदर्शित करें, जिसमें डेटाबेस से सभी आइटम शामिल हैं और इसके अंत में 'अन्य' आइटम का चयन करें मैंने मैन्युअल रूप से अपने नियंत्रक में जोड़ा।लार्वेल में एरे पुश

यहाँ मैं करने की कोशिश की क्या है:

$competition_all = Competition::all(); 
    $newCompete = array('name'=>'Others'); 
    array_push($competition_all, $newCompete); 

    $this->competition_games = array('Competition'); 

    foreach ($competition_all as $competition_games) { 
     $this->competition_games[$competition_games->name] = $competition_games->name; 
    } 

क्या यह कहा इस

बिना क्रिया के अपवाद

संदेश की तरह है:

गैर की संपत्ति प्राप्त करने के लिए कोशिश कर रहा है ऑब्जेक्ट स्थान:

C: \ XAMPP \ htdocs \ khelkheladi \ khelkheladi \ आवेदन \ नियंत्रकों \ लाइन 104

मेरी डेटाबेस में पर register.php प्रतियोगिता को देखते हुए क्रम में स्तंभ संरचना

->id 
->year 
->place 
->name 
->created_at 
->updated_at 

के इस प्रकार है ।

जो मैं करने की कोशिश कर रहा हूं वह वास्तव में डेटाबेस में कोई आइटम डालने के बिना है, केवल स्थिर रूप से अन्य चुनिंदा आइटम को चुनिंदा टैग में दिखाएं। मैं वास्तव में डेटाबेस में डालने के बिना इस तरह की नई वस्तु कैसे डालूं लेकिन केवल दृश्य में प्रदर्शित करने के लिए?

उत्पादन क्या मैं सिर्फ पुन: प्राप्त करने डेटाबेस आइटम द्वारा पहले हो रही है इस

<select> 
    <option value="1">Value 1</option> 
    <option value="2">Value 2</option> 
    <option value="3">Value 3</option> 
    <option value="4">Value 4</option> 
</select> 

की तरह है कि मैं क्या करना चाहते इस

<select> 
    <option value="1">Value 1</option> 
    <option value="2">Value 2</option> 
    <option value="3">Value 3</option> 
    <option value="4">Value 4</option> 
    <option value="5">Others</option> 
</select> 
+3

आप यहां एक वर्ष से अधिक * के लिए सदस्य रहे हैं। यह जानने का समय है कि संपादक का उपयोग कैसे करें और दूसरों को ठीक करने के लिए विकृत सामग्री पोस्ट करना बंद करें। अपने कोड ब्लॉक इंडेंट करें। – meagar

+0

ठीक है, मैंने अपनी त्रुटि को सही किया, लेकिन मेरा मानना ​​है कि PHP कोड पहले ही इंडेंट किए गए थे। इस टिप्पणी के लिए धन्यवाद, फिर से नहीं होगा। – monk

उत्तर

1

"क्लीन" जिस तरह से यह करने के लिए की तरह है Competition का डेटाबेस बनाने के बिना एक उदाहरण बनाना होगा, और अतिरिक्त चक्र के साथ एक बार अपने चक्र को दोहराएं।

हालांकि, यहां आप सिर्फ एक सूची का निर्माण होना दिखाई देते हैं, तो यह अंतिम सूची के लिए एक बहुत जल्दी इसके अलावा करने के लिए पर्याप्त होना चाहिए:

$competition_all = Competition::all(); 
$this->competition_games = array('Competition'); 

foreach ($competition_all as $competition_games) { 
    $this->competition_games[$competition_games->name] = $competition_games->name; 
} 
$this->competition_games['name'] = 'Others'; 
4

क्योंकि आप एक गैर वस्तु जोड़ रहे है यही कारण है कि सरणी के अंतिम तत्व के लिए।

यहाँ मैं आप का नाम संपत्ति

$competition_all = Competition::all(); 

यहाँ आप एक कुंजी जोड़ने के साथ वस्तुओं की एक सरणी मिल लगता है => वस्तुओं सरणी के अंतिम तत्व

$newCompete = array('name'=>'Others'); 
array_push($competition_all, $newCompete); 

आप यहाँ करने के लिए मान युग्म वस्तुओं की सरणी के माध्यम से चलें और जब अंतिम तत्व की बात आती है तो "$ compet_games-> name" का नाम कोई नाम नहीं है

foreach ($competition_all as $competition_games) { 
      $this->competition_games[$competition_games->name] = $competition_games->name; 
     } 

इसके लिए एक स्टडक्लास सहित कुछ कोशिश करें:

$newCompete = new StdClass(); 
$newCompete->name = 'Others'; 
array_push($competition_all, $newCompete); 
+0

इस उत्तर के लिए धन्यवाद, अब मुझे और ज्ञान है, बहुत बहुत धन्यवाद – monk