PHP正在使用Laravel框架,我需要每个商店输入一个日期。
public function store ($id, request $request)
{
$validation = $this -> validate($request,['date_entry'->'required']);
$existingEntry = data::where('date_entry',$request->date_entry)->first();
if(count($existingEntry)>0){
return redirect()->route('data.create',$id)->withErrors($validation)->withInput();
}else{
$store=Store::findorfail($id);
$log = new data($request->all());
if($request->submit_type=="submit_save"){
$log->status_id=2;}
else{
$log->status_id=1;}
$store->db_data()->save($log);
return redirect()->route('data.show',$id);
}
if(count($existingEntry)>0))
为其余商店创建一个日期条目,我想要的是,我只能为每个商店放置1天的日期条目,并且同一天不再重复。
|-----|---------|------------------|
| ID | Store | DateEntry |
|-----|---------|------------------|
| 1 | Store1 | 9/23/2017 |
|-----|---------|------------------|
| 2 | Store2 | 9/23/2017 |
|-----|---------|------------------|
| 3 | Store3 | 9/23/2017 |
|-----|---------|------------------|
| 4 | Store1 | 9/24/2017 |
我的代码要做的是,它只存储1个日期条目,而您将无法存储其他商店的其他日期条目,我想要的是我能够存储每个商店的日期条目,但没有不接受相同的日期输入。
答案 0 :(得分:0)
只需在迁移文件中设置此列unique
:
Schema::create('your_table', function (Blueprint $table) {
//
$table->string('Store')->unique();
});
答案 1 :(得分:0)
您可以使用验证规则
$request->validate([
'sample' => 'required|unique:table_name'
]);
答案 2 :(得分:0)
Schema::create('datas', function(Blueprint $tab;e){
$table->increments('id');
$table->string('store');
$table->string('date_entry')->unique();
// other attribute goes here;
});
当您在列上设置unique
约束时,当您插入具有data_entry
的新数据时,MySQL将引发一些错误。但是,如果执行此操作,则每次使用date_entry插入已经存在的数据时,应用程序都会抛出一些异常。为了避免这种情况,您必须在插入数据时进行验证
$validator = Validator::make($request->all(), [
'data_entry' => 'required|unique:datas:data_entry',
// other rules
]);
required|unique:datas:data_entry
的这一规则可以使人雄辩地确保表datas
中只有一个元素,并且要插入的date_entry