Laravel - 尝试获取非对象的 属性 'id'
Laravel - Trying to get property 'id' of non-object
我有一个错误:
"Trying to get property 'id' of non-object (View: C:
xampp\htdocs\klikdesaku\resources\views\admin\posts\create.blade.php)"
我在没有laravel集体形式的情况下使用过它(我不知道它的名字)
示例:{{!! Form::select() !!}}
这是我的代码:
create.blade.php
@foreach ($categories as $category )
<option value="{{$category->id}}">{{$category->name}}</option>
PostController.php
public function create(){
$this->authorize('create', Post::class);
$categories = Category::pluck('name','id')->all();
return view ('admin.posts.create', ['categories'=>$categories]);
}
public function store(){
$this->authorize('create', Post::class);
$inputs = request()->validate([
'title'=>'required',
'post_image'=>'file', //mime: jpeg, png
'body'=>'required',
'category_id'=> 'required'
]);
if(request('post_image')){
$inputs['post_image'] = request('post_image')->store('images');
}
auth()->user()->posts()->create($inputs);
session()->flash('post-create-message', 'Post was Created ' . $inputs['title']);
return redirect()->route('post.index');
public function create(){
$this->authorize('create', Post::class);
$categories = Category::all(['name','id']);
return view ('admin.posts.create')->with(['categories'=>$categories])
}
当调用 pluck
时,您正在拉取一列 'name',然后通过键索引该值,在本例中为 'id'(第二个参数)。在返回的 Collection 上调用 all
时,您将获得底层关联数组。所以你的 'id' 字段是键,类别 'name' 是值:
@foreach ($categories as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach
即使您没有调用 all
并且您有来自 pluck
的 Collection,这仍然可以正常工作。
Laravel 8.x Docs - Database - Query Builder - Retrieving A List Of Column Values pluck
我有一个错误:
"Trying to get property 'id' of non-object (View: C:
xampp\htdocs\klikdesaku\resources\views\admin\posts\create.blade.php)"
我在没有laravel集体形式的情况下使用过它(我不知道它的名字)
示例:{{!! Form::select() !!}}
这是我的代码:
create.blade.php
@foreach ($categories as $category )
<option value="{{$category->id}}">{{$category->name}}</option>
PostController.php
public function create(){
$this->authorize('create', Post::class);
$categories = Category::pluck('name','id')->all();
return view ('admin.posts.create', ['categories'=>$categories]);
}
public function store(){
$this->authorize('create', Post::class);
$inputs = request()->validate([
'title'=>'required',
'post_image'=>'file', //mime: jpeg, png
'body'=>'required',
'category_id'=> 'required'
]);
if(request('post_image')){
$inputs['post_image'] = request('post_image')->store('images');
}
auth()->user()->posts()->create($inputs);
session()->flash('post-create-message', 'Post was Created ' . $inputs['title']);
return redirect()->route('post.index');
public function create(){
$this->authorize('create', Post::class);
$categories = Category::all(['name','id']);
return view ('admin.posts.create')->with(['categories'=>$categories])
}
当调用 pluck
时,您正在拉取一列 'name',然后通过键索引该值,在本例中为 'id'(第二个参数)。在返回的 Collection 上调用 all
时,您将获得底层关联数组。所以你的 'id' 字段是键,类别 'name' 是值:
@foreach ($categories as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach
即使您没有调用 all
并且您有来自 pluck
的 Collection,这仍然可以正常工作。
Laravel 8.x Docs - Database - Query Builder - Retrieving A List Of Column Values pluck