Laravel @foreach - 提供的参数无效

时间:2014-03-14 00:43:17

标签: php laravel

我是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']);
}

我做错了什么?

3 个答案:

答案 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;
}