Laravel 6: попытка получить свойство необъекта - PullRequest
0 голосов
/ 07 ноября 2019

Ошибка: Попытка получить свойство 'гендерный идентификатор' необъекта

Контроллер:

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);

Ответы [ 4 ]

1 голос
/ 07 ноября 2019

вам нужно использовать где, и после него у вас будет коллекция.

$teachers = DB::table('teachers')->where('id', $id)->get();

когда вы используете find, у вас есть один элемент

0 голосов
/ 07 ноября 2019

Если вы хотите вернуть коллекцию для просмотра, используйте метод get(), например: -

public function printreports(Request $request)
{
$id = $request->get('select2'); 
$teachers = DB::table('teachers')->where('id', $id)->get();
return view('teachers.report1',compact('teachers'));
}
0 голосов
/ 07 ноября 2019

$teachers = DB::table('teachers')->find($id); вернет одну модель или null, попробуйте использовать $teachers = DB::table('teachers')->get();

0 голосов
/ 07 ноября 2019

Вам не нужно использовать foreach при использовании find().

 @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
...