2012-10-02 16 views
5

Sto provando a inserire il nuovo elemento dell'array nella variabile array esistente che contiene elementi dal database. Quello che voglio fare è aggiungere un nuovo oggetto chiamato "Others" alla fine di questo array e visualizzarlo come select drop down in view che consiste di tutti gli elementi dal database e alla fine di questo selezionare l'elemento "Others" che Ho aggiunto manualmente nel mio controller.Array Push in Laravel

Ecco quello che ho cercato di fare:

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

quello che ha detto è come questo

eccezione non gestita

Messaggio:

Cercando di ottenere la proprietà di non oggetto Località:

C: \ xampp \ htdocs \ khelkheladi \ khelkheladi \ Application \ controllori \ register.php on line 104

nel mio database del Concorso ha questo tipo di struttura di colonna

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

in data ordine .

Quello che sto cercando di fare è senza effettivamente inserire un elemento nel database, solo in modo statico mostrare agli altri l'elemento selezionato nel tag select in vista. Come inserisco tale nuovo elemento senza effettivamente inserirlo nel database ma da visualizzare solo nella vista?

L'uscita quello che sto ottenendo, prima per voce del database proprio recupero è come questo

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

quello che mi piace fare è come questo

<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

Sei stato un membro qui per * per un anno *. È giunto il momento di imparare a utilizzare l'editor e di interrompere la pubblicazione di contenuti malformati che altri potrebbero risolvere. Rientra il tuo codice blocchi. – meagar

+0

ok, ho corretto il mio errore, ma credo che i codici php fossero già rientrati. grazie per questo commento, non succederà più. – monk

risposta

1

Il modo "pulito" per farlo sarebbe quello di creare un'istanza di Competition senza commetterlo nel database e ripetere ancora una volta il ciclo con l'istanza aggiuntiva.

Tuttavia, qui sembrano essere solo la produzione di una lista, in modo che dovrebbe essere sufficiente per fare un molto più veloce aggiunta alla lista finale:

$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

Questo perché si sta aggiungendo un non-oggetto fino all'ultimo elemento dell'array.

Qui suppongo che si ottiene un array di oggetti con la proprietà nome

$competition_all = Competition::all(); 

Qui si aggiunge una chiave => coppia di valori per l'ultimo elemento dell'array oggetti

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

Qui cammina attraverso la schiera di oggetti e quando arriva l'ultimo elemento il nome "$ competition_games->" non ha la proprietà name

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

provare qualcosa di simile tra cui uno stdClass per le cose come:

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

Grazie per questa risposta, ora ho più conoscenza, grazie mille – monk

Problemi correlati