Как отобразить последний вставленный идентификатор в db с помощью Laravel после создания
Контроллер пациента:
public function store(Request $request)
{
$input = request()->all();
Patient::create($input);
dd($input->id);
// return redirect()->route('medical.create',compact('input'));
}
Это мой медицинский взгляд.
{!! Form::model($input, [
'method' => 'POST',
'action' => ['MedicalController@store', $input->id]
]) !!}
<div class="row">
<div class="col-md-4">
<div class="form-group">
{{Form::label('patient_id','Patient no:')}}
{{Form::text('patient_id', null, array('class' => 'form-control') )}}
</div>
</div>
</div>
{!! Form::close() !!}
Я хочу получить свой последний вставленный идентификатор после сохранения и отобразить последний идентификатор в следующей форме, но на моем экране появляется эта ошибка:
Trying to get property 'id' of non-object
Это моя таблица пациентов:
ht tps://stackru.com/images/e549d dd448b8b297d76495352231d780158440cf.png
4 ответа
Вы можете сделать это, сохранив Patient
объект в переменной при ее создании:
public function store(Request $request)
{
$input = request()->all();
$patient = Patient::create($input); // Save it in variable
dd($patient->id); //Now you can access patient id here
// return redirect()->route('medical.create',compact('patient')); //Also you can pass it to your view
}
Вы можете использовать идентификатор, например код ниже, с наименьшими изменениями в вашем коде
$input = request()->all();
$input = Patient::create($input);
dd($input->id);
// return redirect()->route('medical.create',compact('input'));
Вы можете получить идентификатор после сохранения данных путем массовых назначений:
public function store(Request $request)
{
$input = request()->all();
$patient = new Patient($input); // fill model with mass assignments
$patient->save() // save instant
$id = $patient->id; //retrive id
}
Вы не можете использовать компактный при перенаправлении. Попробуй это:
Контроллер пациента:
public function store(Request $request)
{
$input = request()->all();
$patient = Patient::create($input);
$patient = DB::table('patients')->get()->last();
return redirect()->route('medical.create')->with('patient_id', $patient->id);
}
Это мой медицинский взгляд.
{!! Form::model($input, [
'method' => 'POST',
'action' => ['MedicalController@store', session('patient_id')]
]) !!}
<div class="row">
<div class="col-md-4">
<div class="form-group">
{{Form::label('patient_id','Patient no:')}}
{{Form::text('patient_id', null, array('class' => 'form-control') )}}
</div>
</div>
</div>
{!! Form::close() !!}