Pregunta

Estoy tratando de impulsar un nuevo elemento de matriz a la variable de matriz existente que tiene elementos de la base de datos. Lo que quiero hacer es agregar un nuevo artículo llamado 'otros' al final de esta matriz y mostrarlo como seleccione desplegable en vista, que consiste en todos los elementos de la base de datos y al final de este seleccione el elemento 'Otros' que Añadido manualmente en mi controlador.

Aquí está lo que intenté 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 así

Excepción no controlada

Mensaje:

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

c: \ xampp \ htdocs \ khelkheladi \ khelkheladi \ application \ controlers \ regher.php en la línea 104

En mi base de datos, la competencia tiene este tipo de estructura de 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, simplemente muestre estadísticamente los otros Seleccione el elemento en Seleccionar etiqueta en la vista. ¿Cómo inserto este artículo nuevo sin insertarlo en la base de datos, pero para mostrar solo en la vista?

La salida Lo que estoy recibiendo antes por recuperar el elemento de la 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 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>
  <option value="5">Others</option>
</select> 

¿Fue útil?

Solución

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

Sin embargo, aquí parece estar produciendo una lista, por lo que debería ser suficiente para hacer una adición mucho más rápida 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';

Otros consejos

Eso es porque está agregando un no objeto al último elemento de la matriz.

Aquí supongo que obtienes una matriz de objetos con la propiedad Nombre

$competition_all = Competition::all();

Aquí agrega una tecla=> Par de valor al último elemento de la matriz de objetos

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

Aquí caminas a través de la matriz de objetos y cuando se trata del último elemento, el nombre "$ compete_pet_games-> no tiene una propiedad de nombre

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

Probar algo como incluir un STDCLASS para él como:

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top