在控制器中,我将一些数据存储在一个数组中。然后我想把它发送到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: IlluminateSupportCollection::$election_name
发生,如何解决问题?
我会修复一系列问题,以便使您的代码清晰并向您解释问题。首先,在您的代码中,您有:
foreach ($election_list as $election_list)
我将重命名变量供您查看:
foreach ($foo as $foo)
因此,这样做是在foreach循环中,您将一一获取所有值,就像预期的那样,但每次将其存储到初始变量时。一旦你完成了foreach或更早地突破它,$election_list
将具有最后使用的值。如果您稍后再次尝试使用相同的 $election_list,则可能会产生意外结果。所以我建议使用不同的变量名称,例如$election_list as $election
接下来,有点不清楚为什么要自己跟踪新元素的$index。相反,您可以像这样推入数组:
$my_election[] = $newObj
实际错误消息:
现在对于实际的错误消息:->get()
返回一个集合。所以最后你有一个充满集合的数组。因此,当您执行$election_list[$i]
时,在 for 循环中 - 这实际上将是一个集合对象而不是模型,因此是异常。
->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
的模型集合。