Schema::create('users', function($table) { $table->increments('id'); $table->string('username', 32); $table->string('email', 320); $table->string('password', 60); $table->timestamps(); });
將建立如下數據庫表:mysql
mysql> describe users; +------------+------------------+-----+----------------+ | Field | Type | Key | Extra | +------------+------------------+-----+----------------+ | id | int(10) unsigned | PRI | auto_increment | | username | varchar(32) | | | | email | varchar(320) | | | | password | varchar(60) | | | | created_at | timestamp | | | | updated_at | timestamp | | | +------------+------------------+-----+----------------+
Schema::rename($from, $to);
Schema::drop('users'); Schema::dropIfExists('users'); // 建議使用這種方式
Schema::connection('foo')->create('users', function($table) { $table->increments('id'): });
$table->increments('id'); // INTEGER 類型 $table->bigIncrements('id'); // BIGINT 類型
$table->integer('votes'); // INTEGER 類型 $table->bigInteger('votes'); // BIGINT 類型 $table->smallInteger('votes'); // SMALLINT 類型 $table->tinyInteger('votes'); // TINYINT 類型
注意: tinyInteger
僅 MySQL
SqlServer
支持, Postgres
會將其識別爲 smallint
,而 SQLite
則是隻有 integer
類型。sql
$table->float('amount'); // FLOAT 類型 $table->decimal('amount', 5, 2); // 帶精度和小數的 DECIMAL
$table->string('email'); // VARCHAR 類型 $table->string('name', 100); // VARCHAR 類型(帶長度) $table->text('description'); // TEXT 類型 $table->binary('data'); // BLOB 類型
$table->boolean('confirmed'); // BOOLEAN 類型
$table->enum('choices', array('foo', 'bar')); // ENUM 類型
$table->date('created_at'); // DATE 類型 $table->dateTime('created_at'); // DATETIME 類型 $table->time('sunrise'); // TIME 類型 $table->timestamp('added_on'); // TIMESTAMP 類型
$table->timestamps(); // 添加 created_at 和 updated_at 列 $table->softDeletes(); // 添加 deleted_at 列用於軟刪除
->nullable(); // 指明該字段容許 NULL 值 ->default($value); // 爲字段聲明一個默認值 ->unsigned(); // 設置 INTEGER 爲無符號
$table->string('email')->after('name'); // 指明字段排序 $table->string('email')->comment('電子郵件'); // 字段註釋(非原生)
注意: 關於字段註釋,請參考 讓 Laravel 4.1 的「數據庫遷移」支持 MySQL 字段註釋 。數據庫
Schema::table('users', function($table) { $table->renameColumn('from', 'to'); });
注意: 不支持重命名 enum
字段類型。post
從表中刪除一個字段:.net
Schema::table('users', function($table) { $table->dropColumn('votes'); });
從表中刪除多個字段:code
Schema::table('users', function($table) { $table->dropColumn('votes', 'avatar', 'location'); });
if (Schema::hasTable('users')) { // }
if (Schema::hasColumn('users', 'email')) { // }
$table->primary('id'); // 添加一個主鍵 $table->primary(array('first', 'last')); // 添加組合鍵 $table->unique('email'); // 添加惟一鍵 $table->index('state'); // 添加一個索引
支持鏈式調用:blog
$table->string('email')->unique();
$table->dropPrimary('users_id_primary'); // 從 "users" 表中刪除一個 主鍵 $table->dropUnique('users_email_unique'); // 從 "users" 表中刪除一個 惟一鍵 $table->dropIndex('geo_state_index'); // 從 "geo" 表中刪除一個 索引
指定 user_id
字段參照 users
表中的 id
字段:排序
$table->foreign('user_id')->references('id')->on('users'); $table->foreign('user_id')->references('id')->on('users') ->onDelete('cascade'); $table->foreign('user_id')->references('id')->on('users') ->onUpdate('cascade');
注意: 當建立一個參照遞增整數類型的外鍵的時候,記得把外鍵字段的類型定義爲無符號。索引
$table->dropForeign('posts_user_id_foreign');
Schema::create('users', function($table) { $table->engine = 'InnoDB'; $table->string('email'); });