Как отобразить последний вставленный идентификатор в 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() !!}
Другие вопросы по тегам