我是Laravel和PHP的新手,只是尝试列出我的视图文件中的所有用户:
@foreach ($users as $user)
<li>{{ link_to("/users/{$user->username}", $user->username) }}</li>
@endforeach
但是收到的错误是“为foreach()提供了无效的参数”
在我的控制器中,我有以下功能:
public function users() {
$user = User::all();
return View::make('users.index', ['users' => '$users']);
}
我做错了什么?
答案 0 :(得分:9)
$users
未在您的控制器中定义,但$user
是。您正试图@foreach
覆盖一个字面上等于字符串'$users'
的变量。变化:
$user = User::all();
到:
$users = User::all();
删除$users
周围的单引号:
return View::make('users.index', ['users' => $users]);
答案 1 :(得分:0)
上面的答案是正确的,但是由于其他人在不同的上下文中可能有相同的错误(这基本上意味着您提供给foreach的变量不是数组),因此让我给出另一个原因:
-当您拥有一个雄辩的关系(可能是hasMany)并且与该雄辩模型中的字段具有相同的名称,并且您希望使用foreach遍历关系中的项目时。您会认为自己正在遍历关系,但是Laravel认为该字段的优先级高于关系。解决方案是重命名您的关系(或字段,无论如何)。
答案 2 :(得分:-1)
代码:
foreach ($allresults as $key => $vl) {
foreach ($vl as $vll) {
print_r($vll->customerid);
}
}
显示错误“为foreach()提供了无效的参数” ,
但是在添加行break
之后,它可以正常工作:
foreach ($allresults as $key => $vl) {
foreach ($vl as $vll) {
print_r($vll->customerid);
}
break;
}