Laravel 6: 试图获取 属性 的非对象
Laravel 6: trying to get property of non-object
Error: Trying to get property 'gender_id' of non-object
控制器:
public function printreports(Request $request)
{
$id = $request->get('select2'); //eg. id=1
$teachers = DB::table('teachers')->find($id);
return view('teachers.report1',compact('teachers'));
}
查看:
@foreach($teachers as $teacher)
{{$teacher->gender_id}}
@endforeach
虽然如果我用 Eloquent 通过替换以下查询来做到这一点,但我想用上面提到的数据库查询来做到这一点。
$teachers = Teacher::find($id);
在使用 find()
时不需要使用 foreach
。
@if(sizeof($teachers))
{{$teachers->gender_id}}
{{$teachers->gender_id}}//whatever field you need to display
{{$teachers->gender_id}}//whatever field you need to display
@endif
如果你使用get()
,
$teachers = DB::table('teachers')->where('id','=',$id)->get();
@if(sizeof($teachers))
@foreach($teachers as $teacher)
{{$teacher->gender_id}}
{{$teacher->gender_id}}//whatever field you need to display
{{$teacher->gender_id}}//whatever field you need to display
@endforeach
@endif
你需要用到where,之后你会得到collection.
$teachers = DB::table('teachers')->where('id', $id)->get();
当您使用查找时,您只有一个项目
$teachers = DB::table('teachers')->find($id);
将 return 单个模型或 null
,尝试使用 $teachers = DB::table('teachers')->get();
如果你想return collection查看然后使用get()
这样的方法:-
public function printreports(Request $request)
{
$id = $request->get('select2');
$teachers = DB::table('teachers')->where('id', $id)->get();
return view('teachers.report1',compact('teachers'));
}
Error: Trying to get property 'gender_id' of non-object
控制器:
public function printreports(Request $request)
{
$id = $request->get('select2'); //eg. id=1
$teachers = DB::table('teachers')->find($id);
return view('teachers.report1',compact('teachers'));
}
查看:
@foreach($teachers as $teacher)
{{$teacher->gender_id}}
@endforeach
虽然如果我用 Eloquent 通过替换以下查询来做到这一点,但我想用上面提到的数据库查询来做到这一点。
$teachers = Teacher::find($id);
在使用 find()
时不需要使用 foreach
。
@if(sizeof($teachers))
{{$teachers->gender_id}}
{{$teachers->gender_id}}//whatever field you need to display
{{$teachers->gender_id}}//whatever field you need to display
@endif
如果你使用get()
,
$teachers = DB::table('teachers')->where('id','=',$id)->get();
@if(sizeof($teachers))
@foreach($teachers as $teacher)
{{$teacher->gender_id}}
{{$teacher->gender_id}}//whatever field you need to display
{{$teacher->gender_id}}//whatever field you need to display
@endforeach
@endif
你需要用到where,之后你会得到collection.
$teachers = DB::table('teachers')->where('id', $id)->get();
当您使用查找时,您只有一个项目
$teachers = DB::table('teachers')->find($id);
将 return 单个模型或 null
,尝试使用 $teachers = DB::table('teachers')->get();
如果你想return collection查看然后使用get()
这样的方法:-
public function printreports(Request $request)
{
$id = $request->get('select2');
$teachers = DB::table('teachers')->where('id', $id)->get();
return view('teachers.report1',compact('teachers'));
}