首页 > 解决方案 > laravel 验证,存储和更新唯一值,尝试获取非对象的属性

问题描述

我使用 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);
    }
}

我怎么能狐狸呢?非常感谢您的帮助:*

标签: phplaravelvalidationlaravel-formrequest

解决方案


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;
 }

推荐阅读