Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用验证模型将逗号分隔值插入数据库_Php_Database_Laravel - Fatal编程技术网

Php 使用验证模型将逗号分隔值插入数据库

Php 使用验证模型将逗号分隔值插入数据库,php,database,laravel,Php,Database,Laravel,我有一个输入字段,可以在数据库中插入名称,就像每次我输入一个名称一样,它都会插入,不允许重复名称,但我想输入多个名称,逗号分隔,这就是我目前拥有的名称 前端 <form method="POST" action="{{route('store.names')}}"> @csrf <div class="form-group row"> <label for="names"

我有一个输入字段,可以在数据库中插入名称,就像每次我输入一个名称一样,它都会插入,不允许重复名称,但我想输入多个名称,逗号分隔,这就是我目前拥有的名称

前端

<form method="POST" action="{{route('store.names')}}">
            @csrf
            <div class="form-group row">
                <label for="names"
                       class="col-md-4 col-form-label text-md-right">Add New Name
                </label>

                <div class="col-md-6">
                    <input id="names" type="text"
                           class="form-control @error('names') is-invalid @enderror" name="names"
                           value="{{ old('names') }}" autocomplete="names" autofocus>

                    @error('names')
                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                    @enderror
                </div>
            </div>
    <div class="form-group row mb-0">
                <div class="col-md-6 offset-md-4">
                    <button type="submit" class="btn btn-primary">
                      Add Names
                    </button>
                </div>
            </div>
        </form>
这样做的目的是一次插入一个人的名字。我如何插入多个人,用逗号分隔,验证完整

但这正是我需要的

我想应该是这样的

    $searchString = ',';

    if( strpos($request->names;, $searchString) !== false )
    {
      // insert in to db separately 
    }else{
        $names= Names::create($this->validateRequest());
    }

您可以覆盖
preparefovalidation
以预处理数据。在本例中,它将按分隔符拆分字符串。然后,您可以使用
规则
方法或您自己的显式验证调用应用数组验证

protected function prepareForValidation() {
    $this->replace(['names' => explode(',', $this->names)]);
}

public function rules() {
    return [
        'name' => 'required|min:2|unique:Names',
        'names.*' => 'name'
    ];
}
可以使用explode()PHP函数将输入字段给定的字符串拆分为数组。该数组将使您能够更灵活地存储多个名称

例如:

explode(", ", "peter, jhon, pete");
根据你的代码调整这个,你会没事的


有关explode()函数的更多信息,您可以阅读PHP文档:

我真的不明白如何实现它
explode(", ", "peter, jhon, pete");