如果在laravel 5.4之前存在,请不要保存在数据库中

时间:2017-10-27 06:31:15

标签: php database laravel

我有一个表单需要为我的帖子创建类别,其他类别在标签表中,现在我想当我添加新类别时,我收到此错误并返回如何我可以这样做?我的表单创建新类别有此代码:

 <form method="post" class="form-horizontal" action="/tag">
       {{csrf_field()}}
    <div class="form-group">
        <label class="control-label col-sm-4" >New Category:</label>
        <div class="col-sm-5">
            <input type="text" class="form-control" name="name">
        </div>
    </div>

    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-12">
            <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </div>
</form>

我的Controller to Add类别有以下代码:

  public function store(request $request)
{
    $this->validate($request,array('name'=>'required'));
    $tag=new Tag;
    $tag->name=$request->name;
    $tag->save();
    return redirect('/tag');
}

1 个答案:

答案 0 :(得分:0)

你有没有试过看到这条规则? https://laravel.com/docs/5.4/validation#rule-unique

在doc示例中:

$v = Validator::make($data, [
    'email' => 'unique:users,email_address'
]);

在你的场景中可能是:

$valid = Validator::make($data, [
    'name' => 'unique:table'
]);

如果您可以检查$valid->fails()是否有错误,可以使用$valid->errors()->all()进行打印

所以,在你的$ this-&gt; validate()函数中放入vcalidation之后,如果有错误则返回,你可以这样做:

$validation = $this->validate($request,array('name'=>'required|unique:table_name'));
if($validation->valid){
 ...
 }else{ 
 //what you want like:
       redirect('route')->withErrors(["errors"=>$validation->errors])
 }

你的功能验证可能是这样的:

private function validate($data , $rules){
  $valid = Validator::make($data, $rules);
  $result = new /StdClass();
  $result->valid = !$valid->fails();
  $result->errors = $valid->errors()->all()
  return $result
}