2017-07-21 1 views
0

の$ election_name、私は私がチェックし、私はmyelectionlist.blade.php未定義のプロパティ:を照らしサポートコレクション::コントローラビューで

$my_election=[]; 
    $i=0; 
    foreach ($election_list as $election_list) 
    { 
      $my_election[$i]=DB::table('election') 
         ->where('id','=',$election_list->election_id) 
         ->get(); 
         $i++; 
    } 
return view::make('myelectionlist')->with('election_list',$my_election); 

にそれを送りたいarray.Thenでいくつかのデータを保存します

return $my_election 

これは問題なく動作します。しかしmyelectionlist.blade.phpでは、私はそれが動作しない

@for($i=0;$i<sizeof($election_list);$i++)      
{{$election_list[$i]->election_name}} 
@endfor 

書くとき。

Undefined property: Illuminate\Support\Collection::$election_name 

どうすれば問題を解決できますか?

+0

ループの代わりにforeachループを使用すると問題が解決します。理由は誰にも分かりますか? –

答えて

1

コードに明快さをもたらし、問題を説明するために私が修正する問題の組み合わせがあります。まず、あなたが持っているあなたのコード内のすべての:あなたが見ることのために

​​

私は、変数の名前を変更します:

foreach ($foo as $foo) 

をそれでは、これがないと、foreachループ内のすべての値を取得することです期待通りですが最初の変数に格納するたびに1つずつそして、あなたがforeachでやり遂げられるか、早くそれから脱出すると、$election_listは最後に使用された値を持ちます。あとで同じ$ election_listを再度使用しようとすると、予期しない結果になることがあります。あなたが自分で新しい要素の$インデックスを追跡する理由だから私は、おそらく$election_list as $election


次のようにdifferet変数名を使用することをお勧めします、それは少し不明です。代わりに、あなたはこのような配列にプッシュすることができます:

$my_election[] = $newObj 

実際のエラーメッセージ:

さて、実際のエラーメッセージの:コレクションを返します->get()。だから最後にコレクションのコレクションがいっぱいです。したがって、$election_list[$i]を実行するときのforループの内部では、これは実際にはModelの代わりにCollectionオブジェクトになり、したがって例外になります。

->get()は、常にあなたにコレクションを取得します。たとえば、->first()やfind/findOrFailなどのメソッドを使用すると、単一のモデルが得られます。とにかくwithとidを要求しているので、これらの関数を使用する方が適切かもしれません。あなたがモデルのコレクションを持っている

$my_election = DB::table('election') 
    ->whereIn('id', $election_list->pluck('election_id')) // pluck will give all the id's 
    ->get(); 

この方法$my_electionに割り当て:この質問は、あなたのコードの簡易版でない場合


また、私はあなたが実際にコントローラ内部でやるべきだと思うものを。

+0

Brother、もう一つ、blade.phpの$ my_electionからデータを取得する最良の方法は何ですか? –

+0

@AlimurRaziRana私はおそらくforeachを使用します: '@foreach($ my_election as $ election)' –