2012-10-02 12 views
5

Próbuję przesłać nowy element tablicy do istniejącej zmiennej tablicowej, która ma elementy z bazy danych. Chcę dodać nowy element o nazwie "Inne" na końcu tej tablicy i wyświetlić go jako rozwijany widok wybierz, który składa się ze wszystkich elementów z bazy danych i na końcu tego wybierz element "Inne", który Ręcznie dodałem do kontrolera.Array Push Laravel

Oto co próbowałem zrobić:

$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; 
    } 

co powiedział jest jak ten

nieobsługiwany wyjątek

Wiadomość:

próbuje własności nie- obiekt Lokalizacja:

C: \ xampp \ htdocs \ khelkheladi \ khelkheladi \ kontrolery aplikacji \ \ register.php on line 104

w mojej bazy danych Konkurs ten typ struktury kolumnowej

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

w podanej kolejności .

Co próbuję zrobić, bez faktycznego wstawiania elementu do bazy danych, po prostu statycznie pokazać innym wybrać element w zaznaczonym znaczniku w widoku. Jak wstawić taki nowy element bez faktycznego wstawiania go do bazy danych, ale tylko do wyświetlania?

Wyjście Chodzi mi po prostu przed odzyskiwaniem pozycji bazy danych jest jak ten

<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> 

co chciałbym zrobić, to jak ten

<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

Zostałeś członkiem tutaj * przez rok *. Czas nauczyć się korzystać z edytora i przestań publikować zniekształcone treści, aby inni mogli je naprawić. Wcięcie bloków kodu. – meagar

+0

OK, poprawiłem swój błąd, ale uważam, że kody php były już wcięte. dziękuję za ten komentarz, nie powtórzy się. – monk

Odpowiedz

1

„czystego” sposób to zrobić byłoby utworzenie instancji o wartości Competition bez przypisywania jej do bazy danych i powtórzenie swojego cyklu z dodatkowym wystąpieniem.

Jednakże, tutaj wydaje się być po prostu tworząc listę, więc to powinno wystarczyć, aby zrobić dużo szybciej dodatek do ostatecznej listy:

$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

to dlatego, że jesteś dodając non-object do ostatniego elementu tablicy.

Tutaj przypuszczam można uzyskać tablicę obiektów z właściwości name

$competition_all = Competition::all(); 

Tu dodać klucz => wartość pary do ostatniego elementu tablicy obiektów

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

Tutaj przejdź przez tablicę obiektów, a jeśli chodzi o ostatni element, "$ competition_games-> name" nie ma nazwy name

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

Wypróbuj coś takiego jak dodanie stdclass do tego:

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

Dziękuję za tę odpowiedź, teraz mam więcej wiedzy, dziękuję bardzo – monk