Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

4xjbh's avatar
Level 4

Request parameter not updated when stored.

When this executes the job is stored without a job number but the $request contains the correct value for 'number_full'. What have I done wrong?

    public function store(JobRequest $request)
    {
        $jobnumber = $this->getNextJobNumber();
        $request->merge([ 'number_full' => $jobnumber ]);
        $request->request->add(['display_name' => "{$request->number_full} {$request->title}"]);
        $job = Job::Create(request()->all());
        return redirect("/job/".$job->id );
    }

0 likes
6 replies
siangboon's avatar

try dd() out the $request->all() and request()->all() before the Create method and compare them first,

public function store(JobRequest $request)
    {
        $jobnumber = $this->getNextJobNumber();
        $request->merge([ 'number_full' => $jobnumber ]);
        $request->request->add(['display_name' => "{$request->number_full} {$request->title}"]);
        
    //dd($request->all());
        dd(request()->all());
       
        $job = Job::create(request()->all());
        
        return redirect("/job/".$job->id );
    }


Snapey's avatar

make sure number_full is fillable in the model

Rather than merging the request, you can use a simple +

    public function store(JobRequest $request)
    {
        $jobnumber = $this->getNextJobNumber();

        $job = Job::create(request()->all() + 
                ['number_full'=> $jobnumber, 
                 'display_name' =>"{$request->number_full} {$request->title}"
                ]);

        return redirect("/job/".$job->id );
    }

but beware, you have a race condition. I don't know how you resolve getNextJobNumber but there is a point where you have the next number but before saving this record, someone else also asks for the 'next' number and gets the same one.

4xjbh's avatar
Level 4

None of these helped, thank you. It has something to do with the JobRequest, I changed it back to 'Request' to bypass validation and all worked fine. "create(request()->all()" must pull from request object. (newbie)

I found the following workedwith the JobRequest but it does not look very tidy.

$job = Job::create(request()->merge([ 'number_full' => $jobnumber ])->all());

Snapey's avatar
    public function store(JobRequest $request)
    {
        $jobnumber = $this->getNextJobNumber();

        $job = Job::create($request->all() + 
                ['number_full'=> $jobnumber, 
                 'display_name' =>"{$request->number_full} {$request->title}"
                ]);

        return redirect("/job/".$job->id );
    }
munazzil's avatar

End of the query use get() because all is used for get everything in a model without any condition or query

      $job = Job::create(request()->merge([ 'number_full' => $jobnumber ])->get());

Please or to participate in this conversation.