Я следующая схема для создания адреса таблицы:Laravel 5.2 Схема базы данных создает уникальный столбец, это сам
Schema::create('addresses', function (Blueprint $table) {
$table->string('id')->index();
$table->string('street', 100);
$table->integer('number', 5);
$table->string('addition', 10);
$table->string('postal_code', 7);
$table->string('place', 45);
$table->string('country', 45);
$table->timestamps();
$table->softDeletes();
});
По соображениям безопасности, «идентификатор» является случайной сгенерирована и уникальной строкой вместо auto increment integer.
Только одна проблема: Laravel делает номер столбца уникальным, потому что это единственный столбец с типом данных integer. Мы хотим, чтобы столбец «id» был основным и уникальным ключом.
Мы также попытался это:
$table->primary('id')->index();
$table->uuid('id')->index();
$table->string('id')->primary()->index();
Я все еще получаю эту ошибку:
Integrity constraint violation: 19 UNIQUE constraint failed:
addresses.number
я собираюсь комментировать о чем-то еще здесь - вы используете случайный ген стирая уникальную строку вместо auto_increment из соображений безопасности - какие причины? Если вы не хотите раскрывать числовой идентификатор, почему бы вам не поставить закодированный или зашифровать его, base64_encode и доставить это? В противном случае у вас будет очень и очень плохое время, и вы узнаете, почему, когда ваши данные растут. – Mjh