Laravel 5.5 - 试图获得非对象的属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 5.5 - 试图获得非对象的属性相关的知识,希望对你有一定的参考价值。
我正在尝试更新我的数据,但我不断收到此错误消息:“尝试获取非对象的属性(查看:C: xampp htdocs blog resources views update.blade.php)”。
这是我的update.blade.php文件
@extends ('layout')
@section ('title')
Update page
@stop
@section ('content')
<div class="row">
<div class="col-lg-12">
<form action="/todo/save" method="post">
{{ csrf_field() }}
<input type="text" class="form-control input-lg" name="todo"
value="{{ $todo->todo }}" placeholder="Type in to create a new todo">
</form>
</div>
</div>
<hr>
@foreach ($todo as $todo)
{{ $todo->todo }} <a href="{{ route('todo.update', ['id' =>$todo->id])
}}" class="btn btn-info btn-sm">Update</a> <a href="{{ route('todo.delete',
['id' =>$todo->id]) }}"class="btn btn-danger">Delete</a>
<hr>
@endforeach
@stop
我的控制器:
public function update($id){
//dd($id);
$todo = Todo::find($id);
return view('update')->with('todo', $todo);
}
最后我的更新路线:
Route::get('/todo/update/{id}', 'TodosController@update')-
>name('todo.update');
这只是一些基本的东西,但我现在在这里停留了几个小时,任何帮助都非常感谢!
答案
如果$ todo为空,则在控制器上使用findOrFail
方法抛出异常
public function update($id){
$todo = Todo::findOrFail($id);
return view('update', compact('todo'));
}
问题也在你的update.blade.php
文件上。 foreach $todo as todo
,$todo
拥有雄辩的模型或雄辩的模型?我认为这是一个雄辩的模型。所以一个循环没有任何意义。
另一答案
如果todo
为FALSE或其他非对象,则会发生该错误。
您可以使用控制器中的var_dump($todo);die();
进行检查。
另一答案
find()
将返回null
或找到的模型。假设找到了模型,那么你在该模型(foreach ($todo...)
)上为每个模型做一个,它将迭代模型的公共属性。这显然不是你打算做的。
它看起来像你试图循环你的待办事项列表并打印出编辑/删除链接。如果是这种情况,您需要在控制器中获取待办事项列表,将其传递到视图中,然后修复foreach
语句。
控制器:
$todos = Todo::get();
// pass to view
视图:
foreach ($todos as $todo)
以上是关于Laravel 5.5 - 试图获得非对象的属性的主要内容,如果未能解决你的问题,请参考以下文章