laravel 验证、存储和更新唯一值,尝试获取 属性 非对象

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

我用laravel 8

我想验证数据并使用一个表单请求来存储和更新它们。

我使用 ignore($this->post->id) 更新唯一数据。

更新有效,但当我想存储新记录时,出现错误

Trying to get property 'id' of non-object

这是我的 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);
    }
}

我怎样才能解决它?非常感谢您的帮助:*

public function rules()
{
       $rules = [
            'user_id'=>['required'],
            'category_id'=>['required'],
            'body'=>['required'],
            'picture'=>['required'],
            'study_time'=>['required','numeric'],
            'tags'=>['required'],
            'status'=>['required'],
        ];

     if($this->method() == 'POST'){
       $rules['title'] = ['required','max:20', Rule::unique('posts')];
     }else{
       $rules['title'] = ['required','max:20' ,Rule::unique('posts')->ignore($this->post->id)];
     }

      return $rules;
 }

我认为问题可能出在这里

$this->post->id

所以试试这个

$post->id

或者那个

$this->post['id']

希望有用!