質問
私はデータベースからアイテムを持つ既存の配列変数に新しい配列アイテムをプッシュしようとしています。私がやりたいことは、この配列の最後に 'その他'という名前の新しいアイテムを追加し、データベースからのすべてのアイテムで構成されているビューで選択ドロップダウンを表示することだけを表示します。私は私のコントローラーに手動で追加されました。
これは私がやろうとしたことです:
$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;
}
.
言ったことはこののようなものです
未処理例外
メッセージ:
オブジェクト以外の場所のプロパティを取得しようとしています:
c:\ xampp \ htdocs \ khelkheladi \ khelkheladi \ application \ controllers \ register.php 線104
データベースには、このタイプの列構造があります
.->id ->year ->place ->name ->created_at ->updated_at
指定された順序で。
実際にデータベースにアイテムを挿入せずに、他のユーザーを選択している項目を選択してください。実際にデータベースに挿入せずにそのような新しい項目を挿入するのですが、ビューのみを表示するには?
データベース項目を取得するだけで行っているものは、このようなものです
.<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>
私がやりたいことはこのようなものです
.<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>
解決
「クリーン」方法は、データベースにコミットせずにCompetition
のインスタンスを作成し、追加のインスタンスでもう一度あなたのサイクルを繰り返すことです。
しかし、ここではリストを作成するだけであるように見えますので、最終リストにはるかに早く追加されるのに十分であるべきです:
$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';
. 他のヒント
それはあなたがアレイの最後の要素に非オブジェクトを追加するからです。
ここで私は名前のプロパティを持つオブジェクトの配列を取得したと思います
$competition_all = Competition::all();
.
ここでは、オブジェクト配列の最後の要素にキー=>値のペアを追加します。
$newCompete = array('name'=>'Others');
array_push($competition_all, $newCompete);
.
ここではオブジェクトの配列を歩き、最後の要素に入ったときに "$ cattrib_games-> name"に名前のプロパティが含まれていません
foreach ($competition_all as $competition_games) {
$this->competition_games[$competition_games->name] = $competition_games->name;
}
.
STDCLASSを含むようなものをみてください。
$newCompete = new StdClass();
$newCompete->name = 'Others';
array_push($competition_all, $newCompete);
.