从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);
;
}
答案 0 :(得分:2)
您向foreach
循环提供了错误的数据类型。
foreach
需要array
或Collection
。
声明
$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方法只返回一个值。所以不需要循环它。 希望这能解决您的问题。