Я использую пользовательский запрос API к моей базе данных для создания новой записи.
Моя структура таблицы выглядит так:
Структура таблицы
Schema::create('incidents', function (Blueprint $table) {
$table->increments('id');
$table->string('incident_id')->unique();
$table->integer('incident_type')->unsigned();
$table->string('location');
$table->string('street');
$table->string('city');
$table->double('latitude', 10, 6);
$table->double('longitude', 10, 6);
$table->date('date');
$table->time('time');
$table->smallInteger('incident_archived')->default(0);
$table->timestamps();
});
Я установил для Incident_Type значение Unique, поскольку это требование для моей системы. Когда я публикую новую запись в системе:
SERVER_IP/v1/incidents?incident_id=1&city=Muenchen&street=Fichtenstr.20&latitude=100&longitude=300
Первый раз работает отлично.
Второй раз:
SERVER_IP/v1/incidents?incident_id=2&city=Muenchen&street=Fichtenstr.20&latitude=100&longitude=300
когда я использую другой инцидент_ид, я получаю ошибку:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'incidents_incident_id_unique' (SQL: insert into `incidents` (`street`, `city`, `latitude`, `longitude`, `updated_at`, `created_at`) values (Fichtenstr.20, Muenchen, 100, 300, 2015-10-17 12:28:11, 2015-10-17 12:28:11))
Почему при отправке запроса используется та же самая запись, даже если я изменил данные? И как я могу это исправить?
Это потому, что вы не передаете никакого значения дляident_id, поэтому каждый раз по умолчанию используется пустая строка.
insert into `incidents` (`street`, `city`, `latitude`, `longitude`, `updated_at`, `created_at`) values (Fichtenstr.20, Muenchen, 100, 300, 2015-10-17 12:28:11, 2015-10-17 12:28:11))
Не пользователь Laravel, поэтому я не могу сказать вам, почему он не использует инцидент_ид, который вы передаете.
Других решений пока нет …