ユニークな外部キーを作りたいとき,unique
の第1引数とforeign
の第2引数に同じキー名を指定するとインデックスを無駄に2つ作らずに済みます。標準の命名規則はテーブル名_属性名_unique
またはテーブル名_属性名_foreign
となっているので,これにちなんでテーブル名_属性名_unique_foreign
とか付けると良さそう。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateEntitiesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('entities', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned()->unique('entities_user_id_unique_foreign');
$table->foreign('user_id', 'entities_user_id_unique_foreign')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('entities');
}
}