这是我的代码
public function edit($id) {
$categories = Category::all();
$category = Category::find($id);
return view('categories.edit', compact('categories', 'category'));
}
以下是我的编辑表单
{!! Form::open(['url' => ['categories', $category->catid], 'method' => 'put']) !!}
<div class="form-group padding-t-20 {{ $errors->has('name') ? 'has-error' : '' }}">
{{ Form::label('name', 'Name') }}
{{ Form::text('name', $category->name, ['class' => 'form-control', 'placeholder' => 'Category']) }}
<span class="text-danger">{{ $errors->has('name') ? $errors->first('name') : '' }}</span>
</div>
<div class="text-center padding-t-20">
{{ Form::submit('Update', ['class' => 'btn btn-info btn-fill btn-wd']) }}
</div>
{!! Form::close() !!}
它工作正常,但是当我使用如下所示的DB Facade
public function edit($id) {
$categories = DB::select('select * from tbl_menu_category');
$category = DB::select('select * from tbl_menu_category where catid = ?', [$id]);
return view('categories.edit', compact('categories', 'category'));
}
它给我一个错误,试图获取非对象的属性“ catid”
答案 0 :(得分:1)
执行查询
public function edit($id) {
$categories = DB::table('tbl_menu_category')->get(); <--here
$category = DB::table('tbl_menu_category')->where('catid', $id)->first(); <-- here
return view('categories.edit', compact('categories', 'category'));
}
答案 1 :(得分:1)
使用DB :: select()查询数据库时,即使您尝试仅从数据库中获取记录,它也会以数组形式返回结果。
因此解决方案是:
public function edit($id) {
$categories = DB::select('select * from tbl_menu_category');
$category = DB::select('select * from tbl_menu_category where catid = ?', [$id])[0]; <--- grab the first index of the array returned.
return view('categories.edit', compact('categories', 'category'));
}
希望它会有所帮助:)
答案 2 :(得分:1)
$category = DB::table('tbl_menu_category')->where('catid',$id)->first();
试试这个...
这对您有帮助吗?请给我评分...
答案 3 :(得分:0)
如果您不知道传入数据的类型,则optional()
方法最适合这些情况。
optional($category)->catid
完成查询后,也不要忘记获取结果。 可以对单个结果使用
first()
方法,对多个结果使用get()
结果
public function edit($id) {
$categories = DB::select('select * from tbl_menu_category')->get();
$category = DB::select('select * from tbl_menu_category where catid = ?', [$id])->first();
return view('categories.edit', compact('categories', 'category'));
}
我也不得不说,Eloquant是高级orm,因此您不必直接编写sql。您可以使用QueryBuilder方法,使您的查询更具可读性。
public function edit($id) {
$categories = DB::table('tbl_menu_category')->get();
$category = DB::table('tbl_menu_category')->where(catid,$id)->first();
return view('categories.edit', compact('categories', 'category'));
}