我使用自定义的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
当我使用不同的incident_id时,我得到错误:
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))
为什么即使我更改了数据,也要使用完全相同的条目发送请求?我怎样才能解决这个问题呢?
这是因为您没有为incident_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用户,所以我不能告诉你为什么它不使用你传入的incident_id