phplaravelvalidationlaravel-formrequest

laravel validation , store and upate uniques value , Trying to get property of non-object


I use laravel 8

I want to validate data and use one form request for store and update them.

I use ignore($this->post->id) for update unique data.

For update it worked, but when I want to store a new record, gives me error

Trying to get property 'id' of non-object

this is my StorePostRequest :


public function rules()
    {
        return [
            'user_id'=>['required'],
            'category_id'=>['required'],
            'title'=>['required','max:20' ,Rule::unique('posts')->ignore($this->post->id)],
            'body'=>['required'],
            'picture'=>['required'],
            'study_time'=>['required' ,'numeric' , 'max:'],
            'tags'=>['required'],
            'status'=>['required'],

        ];
    }

    public function message(){


        $message=[

            'user_id.required'=>'لطفا نام نویسنده نظر را وارد کنید',

            'category_id.required'=>'لطفا مجموعه مورد نظر را انتخاب کنید',

            'title.required'=>'لطفا عنوان را وارد کنید',

            'body.required'=>'لطفا توضیحات را وارد کنید',

            'picture.required'=>'لطفا تصویر را وارد کنید',

            'study_time.required'=>'لطفا زمان مطالعه را وارد کنید',

            'tags.required'=>'لطفا تگ را انتخاب کنید' ,

            'status.required'=>'لطفا وضعیت را انتخاب کنید',

        ];

        return array_merge(parent::messages(), $message);
    }
}

How can I fix it?


Solution

  • I think the issue may be here

    $this->post->id
    

    so try this instead

    $post->id
    

    or That

    $this->post['id']