[Laravel] ユニークな外部キーを定義する方法

公開日:2018-10-15
最終更新:2018-10-24
※この記事は外部サイト(https://qiita.com/mpyw/items/51af426a28daf...)からのクロス投稿です

ユニークな外部キーを作りたいとき,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');
    }
}
記事が少しでもいいなと思ったらクラップを送ってみよう!
54
+1
@mpywの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする