如何防止PHP中重复的日期条目?

时间:2018-09-23 09:45:36

标签: php sql laravel

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个日期条目,而您将无法存储其他商店的其他日期条目,我想要的是我能够存储每个商店的日期条目,但没有不接受相同的日期输入。

3 个答案:

答案 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