php - 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);
}
}
我怎么能狐狸呢?非常感谢您的帮助:*
解决方案
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;
}
推荐阅读
- javascript - 用户输入重复值时,重复功能不显示警告消息
- mysql - 使用 MySQL 容器 Dockerize Django 项目
- angular - Wordpress admin-ajax.php 在 POST 上返回 0 和状态 400,但在 GET 上工作
- asp.net-mvc - 为什么忘记密码的链接不会重定向到我的应用程序?
- ios - 如何在 Swift 中切换 Bool 动画(在覆盖 ViewWillAppear 方法中)
- c++ - 即使它们相等,分配器感知容器是否需要替换分配器?
- mysql - 数据库 MySQL 竞争条件
- python - dask:袋子上的 groupby 显示出意外的行为
- python - 将字母转换为数字 - python
- mysql - TypeORM:更新没有 id 的冲突