phplaravelmodelcontrollervoyager

Method Illuminate\Http\Request::isDirty does not exist. Laravel


I'm using voyager admin panel. I want to check the attributes that are changed when I submit the form. I'm using isDirty() & getDirty() but that is not working. It is showing that the error

Method Illuminate\Http\Request::isDirty does not exist.

Sometimes showing this error.

Call to a member function isDirty() on string

update Controller

public function update(Request $request, $id)
{
    $slug = $this->getSlug($request);

    $dataType = Voyager::model('DataType')->where('slug', '=', $slug)->first();

    // Compatibility with Model binding.
    $id = $id instanceof \Illuminate\Database\Eloquent\Model
        ? $id->{$id->getKeyName()}
        : $id;

    $model = app($dataType->model_name);
    $query = $model->query();
   
    $data = $query->findOrFail($id);

    $this->insertUpdateData($request, $slug, $dataType->editRows, $data);

    // That part is showing an error
    dd($request->isDirty(['status']));

    return $redirect->with([
        'message'    => __('voyager::generic.successfully_updated')." {$dataType->getTranslatedAttribute('display_name_singular')}",
        'alert-type' => 'success',
    ]);
}

Solution

  • Request will not show the results it will work only with the model. So I used $data instead of $request. And I've to show it in an array. Something like this.

    $data = $query->findOrFail($id);
    $data->status  = $request->status;
    dd($data->isDirty('status'));
    

    I works on my side.