来自laravel的foreach循环的错误

时间:2017-01-15 01:55:52

标签: php laravel foreach

从Laravel的foreach循环中获取错误消息:

Invalid argument supplied for foreach() 

我的foreach循环是:

@foreach ($task as $tasks)

    <td>{{$tasks->name}}</td>

@endforeach

我的控制器是:

public function show($id){
    $task = Task::find($id);

    return view('tasks.show')->withTask($task);
;
}

4 个答案:

答案 0 :(得分:2)

您向foreach循环提供了错误的数据类型。

foreach需要arrayCollection

声明

$task = Task::find($id);

会为您提供Task模型(不是Collection)。 因此,你不能迭代它。

此外,由于您尝试显示Task资源(假设您正在调用控制器的show()功能),因此您不需要迭代model - 因为您将显示单个实体的属性。

就这样做

<强>控制器:

public function show($id){
    $task = Task::find($id);

    return view('tasks.show', compact('task'));
}

在视图中:

Name: {{ $task->name }}
// other attributes here

答案 1 :(得分:1)

我从未见过像你这样设置变量,试试这个

 return view('tasks.show')->with('task', $task);

答案 2 :(得分:0)

反转foreach变量

@foreach ($tasks as $task)
   <td> {{ $task->name }} </td>
@endforeach

答案 3 :(得分:0)

你应该写这个。这将解决您的问题

您的控制器

public function show($id){
    $task = Task::findOrFail($id);

    return view('tasks.show', compact('task'));
}

因为它只有一个值所以不需要使用foreach。你应该写这个

<td>{{$tasks->name}}</td>

findOrFail方法只返回一个值。所以不需要循环它。 希望这能解决您的问题。