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");