2012-10-02 16 views
5

Estoy tratando de empujar el nuevo elemento de matriz en la variable de matriz existente que tiene elementos de la base de datos. Lo que quiero hacer es agregar un nuevo elemento llamado 'Otros' al final de este conjunto y mostrarlo como selección desplegable en la vista que consiste en todos los elementos de la base de datos y al final de esto seleccione el elemento 'Otros' que Yo agregué manualmente en mi controlador.Array Push en Laravel

Esto es lo que he intentado hacer:

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

lo que dijo es como esta excepción

no controlada

mensaje:

Tratando de obtener la propiedad de no objeto Ubicación:

C: \ xampp \ htdocs \ khelkheladi \ khelkheladi \ application \ controllers \ register.php en la línea 104

En mi base de datos de la competencia tiene este tipo de estructura de la columna

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

en orden dado .

Lo que estoy tratando de hacer es sin insertar realmente un elemento en la base de datos, solo mostrar estáticamente los otros elementos seleccionados en la etiqueta de selección a la vista. ¿Cómo inserto ese nuevo elemento sin insertarlo realmente en la base de datos, pero para visualizar solo?

La salida lo que quiero llegar antes con sólo la recuperación de elemento de base de datos es así

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

lo que me gusta hacer es como esto

<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

usted ha sido un miembro aquí por más de un año * *. Es hora de aprender a usar el editor y dejar de publicar contenido mal formado para que otros lo solucionen. Sangra tus bloques de código. – meagar

+0

bien, corregí mi error, pero creo que los códigos php ya estaban sangrados. gracias por este comentario, no volverá a suceder. – monk

Respuesta

1

La forma "limpia" para hacerlo sería crear una instancia de Competition sin comprometerla con la base de datos, y repetir una vez más su ciclo con la instancia adicional.

Sin embargo, aquí parecen ser solo la producción de una lista, por lo que debería ser suficiente para hacer una adición mucho más rápido a la lista final:

$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

Esto se debe a que está añadiendo un no-objeto hasta el último elemento de la matriz.

Aquí supongo que se obtiene una matriz de objetos con la propiedad de nombre

$competition_all = Competition::all(); 

Aquí se agrega una clave => valor de par hasta el último elemento de la matriz de objetos

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

Aquí recorrer el conjunto de objetos y cuando se trata del último elemento, el "$ competition_games-> name" no tiene nombre propiedad

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

intentar algo así como incluyendo un stdClass por ella como:

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

Gracias por esta respuesta, ahora tengo más conocimiento, muchas gracias – monk