テーブルのカラム指定
カラムタイプ
使いそうなものを列挙。
コマンド | 説明 |
---|---|
$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