Tôi đã schema sau để tạo các địa chỉ bảng:Laravel 5.2 chương trình cơ sở dữ liệu tạo ra một cột độc đáo bởi nó tự
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();
});
Vì lý do an ninh, 'id' là một chuỗi ngẫu nhiên được tạo ra và duy nhất thay vì một số nguyên tăng tự động.
Chỉ một vấn đề: Laravel làm cho cột 'số' duy nhất, bởi vì nó là cột duy nhất có số nguyên kiểu dữ liệu. Chúng tôi muốn cột 'id' là khóa chính và duy nhất.
Chúng tôi cũng đã cố gắng này:
$table->primary('id')->index();
$table->uuid('id')->index();
$table->string('id')->primary()->index();
tôi vẫn nhận được lỗi này:
Integrity constraint violation: 19 UNIQUE constraint failed:
addresses.number
tôi sẽ bình luận về cái gì khác ở đây - bạn đang sử dụng một gen ngẫu nhiên xâu chuỗi duy nhất thay vì auto_increment vì lý do bảo mật - lý do gì? Nếu bạn không muốn hiển thị ID số, tại sao bạn không cung cấp mã số được mã hóa hoặc mã hóa nó, base64_encode và phân phối ID đó? Bạn sẽ có một thời gian rất, rất xấu và bạn sẽ tìm hiểu lý do tại sao khi dữ liệu của bạn phát triển. – Mjh