Array Spingere in Laravel
Domanda
Sto cercando di spingere il nuovo elemento dell'array esistente variabile di matrice che ha elementi dal database.Quello che voglio fare è aggiungere una nuova voce denominata "Altri" alla fine di questo array e visualizzare come selezionare nel menu a discesa vista che si compone di tutti gli elementi dal database e alla fine di questo selezionare 'Altri' elemento che ho aggiunto manualmente nel mio controller.
Ecco cosa ho provato a 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 e Posizione:
C:\xampp\htdocs\khelkheladi\khelkheladi\application\controllers egister.php on line 104
Nel mio database il Concorso ha questo tipo di struttura a colonna
->id
->year
->place
->name
->created_at
->updated_at
nell'ordine dato.
Quello che sto cercando di fare è senza inserimento di un elemento in un database, soltanto in modo statico mostrare selezionare la voce nel tag select in vista.Come faccio a inserire tale nuovo elemento senza l'inserimento di database, ma da visualizzare nella vista solo?
L'output che ricevo, prima da solo il recupero di database voce è simile a 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 è questa:
<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>
Soluzione
La "pulizia" di un modo per farlo sarebbe quello di creare un'istanza di Competition
senza commettere il database, e ripetere, una volta di più che il tuo ciclo con l'extra istanza.
Tuttavia, qui sembrano essere solo la produzione di un elenco, in modo che dovrebbe essere abbastanza per fare una molto più veloce oltre alla lista definitiva:
$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';
Altri suggerimenti
Questo perché si sta aggiungendo un non-oggetto per l'ultimo elemento dell'array.
Qui mi si supponga di avere un array di oggetti con il nome di proprietà
$competition_all = Competition::all();
Qui si aggiunge una coppia chiave=>valore per l'ultimo elemento dell'array di oggetti
$newCompete = array('name'=>'Others');
array_push($competition_all, $newCompete);
Qui si cammina attraverso la matrice di oggetti e quando si tratta di l'ultimo elemento della "$competition_games->nome," non ha nome proprietà
foreach ($competition_all as $competition_games) {
$this->competition_games[$competition_games->name] = $competition_games->name;
}
Provare qualcosa di simile tra un stdclass come :
$newCompete = new StdClass();
$newCompete->name = 'Others';
array_push($competition_all, $newCompete);