Php 来自laravel'的错误;s foreach循环

Php 来自laravel'的错误;s foreach循环,php,laravel,foreach,Php,Laravel,Foreach,从Laravel的foreach循环获取错误消息: Invalid argument supplied for foreach() 我的foreach循环是: @foreach ($task as $tasks) <td>{{$tasks->name}}</td> @endforeach 我从没见过像你这样设置变量,试试这个 return view('tasks.show')->with('task', $task); 反转foreach

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

Invalid argument supplied for foreach() 
我的foreach循环是:

@foreach ($task as $tasks)

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

@endforeach

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

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

反转foreach变量

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

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

你的控制器

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

    return view('tasks.show', compact('task'));
}
因为它只得到一个值,所以不需要使用foreach。你应该写这个

<td>{{$tasks->name}}</td>
{{$tasks->name}
findOrFail方法只返回一个值。所以不需要循环它。
希望这能解决您的问题。

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

foreach
需要
数组
集合

声明

$task = Task::find($id);
将为您提供一个
任务
模型(不是
集合
)。 因此,不能对其进行迭代

此外,由于您正试图显示
任务
资源(假设这是在调用控制器的
show()
函数时),因此不需要迭代模型,因为您将显示单个实体的属性


就这么做吧

控制器:

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

    return view('tasks.show', compact('task'));
}
Name: {{ $task->name }}
// other attributes here
在视图中:

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

    return view('tasks.show', compact('task'));
}
Name: {{ $task->name }}
// other attributes here

嗯,也许有点离题了,但为什么你的控制器里有那个额外的分号呢?您的
$task
是否可遍历<代码>dd($task)在foreach内部刀片之前。@Mihailo这不是离题的mate。@linuxartisan的答案是正确的。您不能期望从
$task=task::find($id)接收集合。它只返回匹配的
任务
object@steven如果你已经解决了这个问题,请接受帮助你的答案;这样问题就不会一直悬而未决了。