2017-07-21 69 views
0

在控制器中,我的一些數據存儲在array.Then我想給它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); 

我檢查與

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循環而不是for循環它的工作原理,有人給我理由嗎? –

回答

1

爲了讓您的代碼更清晰並向您解釋問題,我會解決一些問題的組合。首先在你的代碼中你有:

​​

我會重命名變量給你看:

foreach ($foo as $foo) 

那麼這樣做是foreach循環裏面,你會得到所有的值一個接一個,就像預期的那樣,但每次你將它存儲到初始變量中。一旦你完成了這個foreach或者更早的破解,$election_list將會擁有最後一次使用的值。如果您試圖再次使用相同的$ election_list,它可能會有意想不到的結果。所以我建議使用differet變量名也許像$election_list as $election


下,這是一個有點不清楚,你爲什麼會跟蹤自己的新元素$指數。相反,你可以只推入像這樣的數組:

$my_election[] = $newObj 

實際的錯誤消息:

現在的實際的錯誤消息:->get()返回一個Collection。所以最後你有一個充滿了Collections的數組。所以在for循環中,當你做$election_list[$i] - 這實際上是一個Collection對象,而不是Model,因此是異常。

->get()將永遠讓你收集。例如,使用->first()和find/findOrFail等方法,您將獲得一個模型。這些函數可能也更適合使用,因爲我們要求使用id和id。


此外,如果這個問題是不是你的代碼的簡化版本,那麼我認爲你應該在控制器內部真正做到:

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

這樣你的模型的集合,分配給$my_election

+0

兄弟,還有一件事,在blade.php中從$ my_election獲取數據的最佳方式是什麼? –

+0

@AlimurRaziRana我可能會使用foreach:'@foreach($ my_election as $ election)' –

相關問題