Laravel勉強会[05]~テーブルのカラム指定~

テーブルのカラム指定

カラムタイプ

使いそうなものを列挙。

コマンド 説明
$table->bigIncrements(‘id’); 符号なしBIGINTインクリメント
$table->bigInteger(‘votes’); BIGINT
$table->binary(‘data’); BLOB
$table->boolean(‘confirmed’); BOOLEAN
$table->char(‘name’, 100); CHAR
$table->date(‘created_at’); DATE
$table->dateTime(‘created_at’); DATETIME
$table->dateTimeTz(‘created_at’); DATETIME(タイムゾーン付き)
$table->decimal(‘amount’, 8, 2); DECIMAL
$table->double(‘amount’, 8, 2); DOUBLE
$table->float(‘amount’, 8, 2); FLOAT
$table->increments(‘id’); 符号なしINTインクリメント
$table->integer(‘votes’); INTEGER
$table->longText(‘description’); LONGTEXT
$table->macAddress(‘device’); MACアドレス
$table->mediumIncrements(‘id’); 符号なしMEDIUMINTインクリメント
$table->mediumInteger(‘votes’); MEDIUMINT
$table->mediumText(‘description’); MEDIUMTEXT
$table->smallIncrements(‘id’); 符号なしSMALLINTインクリメント
$table->smallInteger(‘votes’); SMALLINT
$table->string(‘name’, 100); VARCHAR
$table->text(‘description’); TEXT
$table->time(‘sunrise’); TIME
$table->timeTz(‘sunrise’); TIME(タイムゾーン付き)
$table->timestamp(‘added_on’); TIMESTAMP
$table->timestampTz(‘added_on’); TIMESTAMP(タイムゾーン付き)
$table->timestamps(); NULL可能なcreate_atとupdated_atカラム
$table->timestampsTz(); タイムゾーン付きでNULL可能なcreate_atとupdated_atカラム
$table->tinyIncrements(‘id’); 符号なしTINYINTインクリメント
$table->tinyInteger(‘votes’); TINYINT
$table->unsignedBigInteger(‘votes’); 符号なしBIGINT
$table->unsignedDecimal(‘amount’, 8, 2); 符号なしDECIMAL
$table->unsignedInteger(‘votes’); 符号なしINTEGER
$table->unsignedMediumInteger(‘votes’); 符号なしMEDIUMINTEGER
$table->unsignedSmallInteger(‘votes’); 符号なしSMALLINTEGER
$table->unsignedTinyInteger(‘votes’); 符号なしTINYINTEGER
$table->uuid(‘id’); UUID

カラム修飾子

使いそうなものを列挙。

コマンド 説明
->default($value) デフォルト値を設定
->nullable($value = true) デフォルトでNULL値を挿入する
->useCurrent() TIMESTAMPのデフォルトにCURRENT_TIMESTAMPを指定

インデックス修飾子

使いそうなものを列挙。

コマンド 説明
$table->primary(‘id’); 主キー追加
$table->primary([‘id’, ‘parent_id’]); 複合キー追加
$table->unique(‘email’); uniqueキー追加
$table->index(‘state’); インデックス追加

外部キー制約

usersテーブルのidカラムを参照する、postsテーブルのuser_idカラムを定義する場合、は次の通り。

Schema::table('posts', function (Blueprint $table) {
    $table->unsignedInteger('user_id');
    $table->foreign('user_id')->references('id')->on('users');
}

「削除時(on delete)」と「更新時(on update)」に対する処理をオプション指定することもできます。

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');

実際に書くとこんな感じ。

$ cat 2019_04_15_083245_create_hoge_table.php
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateHogeTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('hoge', function (Blueprint $table) {
            // ここに記述する
            $table->bigIncrements('id');
            $table->string('name', 20);
            $table->string('mail', 256);
            $table->text('comment')->nullable();
            $table->char('type', 1)->default('C');
            $table->timestamps();

            $table->unique('mail');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('hoge');
    }
}

参考

  • 竹澤勇貴・栗生和明・新原雅司・大村創太郎(2018)『PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5LTS対応』ソシム
  • Laravel Document