Как предотвратить повторяющиеся записи даты в PHP? - PullRequest
0 голосов
/ 23 сентября 2018

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     |

мой код состоит в том, что он хранит только одну запись даты, и вы не сможете хранить другие записи даты для других магазинов, что я хочучто я могу хранить записи о дате для каждого магазина, но не могу принять ту же дату.

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Вы можете сделать это, используя правило валидации

$request->validate([
   'sample' => 'required|unique:table_name'
]);
0 голосов
/ 23 сентября 2018
Schema::create('datas', function(Blueprint $tab;e){
    $table->increments('id');
    $table->string('store');
    $table->string('date_entry')->unique();
    // other attribute goes here;
});

, когда вы даете ограничение unique на столбец MySQL, выдает некоторую ошибку, когда вы вставляете новые Данные с data_entry, который уже существует.Но если вы сделали это, ваше приложение будет выдавать какое-то исключение каждый раз, когда вы вставляете данные с уже существующим date_entry.Чтобы избежать этого, вы должны выполнить проверку при вставке этих данных

$validator = Validator::make($request->all(), [
    'data_entry' => 'required|unique:datas:data_entry',
    // other rules
]);

required|unique:datas:data_entry. Это правило позволяет eloquent убедиться, что в вашей таблице есть только один элемент datas с датой date_entry, которую вы пытаетесьвставить

0 голосов
/ 23 сентября 2018

Просто сделайте этот столбец unique в файле миграции:

Schema::create('your_table', function (Blueprint $table) {
    //
    $table->string('Store')->unique();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...