Question

J'essaie de pousser un nouvel article de tableau dans une variable de matrice existante qui a des éléments de la base de données. Ce que je veux faire, c'est ajouter un nouvel élément nommé «Autres» à la fin de ce tableau et l'afficher comme Sélectionnez une liste déroulante à la vue qui consiste en tous les éléments de la base de données et à la fin de cette sélection, sélectionnez «Autres». J'ai ajouté manuellement dans mon contrôleur.

Voici ce que j'ai essayé de faire:

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

Qu'est-ce que cela dit, c'est comme ça

Exception non gérée

message:

essayer d'obtenir la propriété de l'emplacement de non-objet:

C: \ xampp \ htdocs \ khelkheladi \ khelkheladi \ application \ contrôleurs \ register.php sur la ligne 104

Dans ma base de données, la concurrence a ce type de structure de colonne

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

dans la commande donnée.

Ce que j'essaie de faire est sans insérer un élément dans la base de données, indiquez simplement que les autres sélectionnent l'élément dans Sélectionner la balise dans la vue. Comment insérer un tel nouvel article sans l'insérer réellement à la base de données, mais à afficher uniquement à la vue?

La sortie Ce que je reçois avant de récupérer simplement l'article de base de données est comme celui-ci

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

Ce que j'aime faire, c'est comme ça

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

Était-ce utile?

La solution

Le moyen "propre" de le faire serait de créer une instance de Competition sans l'avoir commis à la base de données et de répéter une fois de plus votre cycle avec l'instance supplémentaire.

Cependant, vous semblez simplement produire une liste, il faut donc suffire à faire un ajout beaucoup plus rapide à la liste 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';

Autres conseils

C'est parce que vous ajoutez un non-objet au dernier élément de la matrice.

Ici, je suppose que vous obtenez un tableau d'objets avec la propriété Nom

$competition_all = Competition::all();

Ici vous ajoutez une clé=> paire de valeur au dernier élément du tableau Objets

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

Ici, vous passez à travers la gamme d'objets et quand il s'agit du dernier élément, le "$ compétition_games-> nom" n'a pas de nom de nom de nom

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

Essayez quelque chose comme inclure une STDCLASS pour cela comme:

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top