によって一意の列を作成します。セキュリティ上の理由から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();
});
を、「ID」は、代わりにANの生成されたランダムかつ一意の文字列であります自動増分整数。
ただ1つの問題:Laravelは、データ型がintegerの唯一の列であるため、列 'number'を一意にします。私たちは、カラム '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の代わりに独自の文字列をエリートしました。その理由は何ですか?数値IDを公開したくない場合は、コード化されたIDを配信するか、暗号化してbase64_encodeして配信してください。そうでなければ、非常に悪い時を過ごすことになり、データがいつ成長するのかを学びます。 – Mjh