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']
希望有用!
我用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']
希望有用!