亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

Laravel 的數據庫遷移的方法

2024-05-04 23:59:07
字體:
來源:轉載
供稿:網友

本文介紹了Laravel 的數據庫遷移的方法,分享給大家,具體如下:

生成遷移

--table 和 --create 選項可用來指定數據表的名稱,或是該遷移被執行時會創建的新數據表。這些選項需在預生成遷移文件時填入指定的數據表:

php artisan make:migration create_users_tablephp artisan make:migration create_users_table --create=usersphp artisan make:migration add_votes_to_users_table --table=users

添加字段

/database/migrations/2017_07_30_133748_create_users_table.php

<?phpuse Illuminate/Support/Facades/Schema;use Illuminate/Database/Schema/Blueprint;use Illuminate/Database/Migrations/Migration;class CreateUsersTable extends Migration{  /**   * 運行數據庫遷移   *   * @return void   */  public function up()  {    //      Schema::create('users',function (Blueprint $table){        $table->increments('id')->comment('遞增ID');        $table->string('email',60)->comment('會員Email');        $table->string('phone',20)->comment('會員手機號');        $table->string('username',60)->comment('用戶名');        $table->string('password',32)->comment('用戶密碼');        $table->char('rank',10)->comment('會員等級');        $table->unsignedSmallInteger('sex')->comment('性別;0保密;1男;2女');        $table->unsignedSmallInteger('status')->comment('用戶狀態');        $table->ipAddress('last_ip')->default('0.0.0.0')->comment('最后一次登錄IP');        $table->timeTz('last_login')->comment('最后一次登錄時間');        $table->timestamps();      });  }  /**   * 回滾數據庫遷移   *   * @return void   */  public function down()  {    //    Schema::drop('users');  }}

要創建一張新的數據表,可以使用 Schema facade 的 create 方法。create 方法接收兩個參數:第一個參數為數據表的名稱,第二個參數為一個 閉包 ,此閉包會接收一個用于定義新數據表的 Blueprint 對象

你可以方便地使用 hasTable 和 hasColumn 方法來檢查數據表或字段是否存在:

if (Schema::hasTable('users')) {  //}if (Schema::hasColumn('users', 'email')) {  //}

如果你想要在一個非默認的數據庫連接中進行數據庫結構操作,可以使用 connection 方法:

Schema::connection('foo')->create('users', function (Blueprint $table) {  $table->increments('id');});

你可以在數據庫結構構造器上設置 engine 屬性來設置數據表的存儲引擎:

Schema::create('users', function (Blueprint $table) {  $table->engine = 'InnoDB';  $table->increments('id');});

重命名與刪除數據表

Schema::rename($from, $to);//重命名//刪除已存在的數據表Schema::drop('users');Schema::dropIfExists('users');

創建字段

Schema::table('users', function (Blueprint $table) {  $table->string('email');});

 

命令 描述
$table->bigIncrements('id'); 遞增 ID(主鍵),相當于「UNSIGNED BIG INTEGER」型態。
$table->bigInteger('votes'); 相當于 BIGINT 型態。
$table->binary('data'); 相當于 BLOB 型態。
$table->boolean('confirmed'); 相當于 BOOLEAN 型態。
$table->char('name', 4); 相當于 CHAR 型態,并帶有長度。
$table->date('created_at'); 相當于 DATE 型態
$table->dateTime('created_at'); 相當于 DATETIME 型態。
$table->dateTimeTz('created_at'); DATETIME (帶時區) 形態
$table->decimal('amount', 5, 2); 相當于 DECIMAL 型態,并帶有精度與基數。
$table->double('column', 15, 8); 相當于 DOUBLE 型態,總共有 15 位數,在小數點后面有 8 位數。
$table->enum('choices', ['foo', 'bar']); 相當于 ENUM 型態。
$table->float('amount', 8, 2); 相當于 FLOAT 型態,總共有 8 位數,在小數點后面有 2 位數。
$table->increments('id'); 遞增的 ID (主鍵),使用相當于「UNSIGNED INTEGER」的型態。
$table->integer('votes'); 相當于 INTEGER 型態。
$table->ipAddress('visitor'); 相當于 IP 地址形態。
$table->json('options'); 相當于 JSON 型態。
$table->jsonb('options'); 相當于 JSONB 型態。
$table->longText('description'); 相當于 LONGTEXT 型態。
$table->macAddress('device'); 相當于 MAC 地址形態。
$table->mediumIncrements('id'); 遞增 ID (主鍵) ,相當于「UNSIGNED MEDIUM INTEGER」型態。
$table->mediumInteger('numbers'); 相當于 MEDIUMINT 型態。
$table->mediumText('description'); 相當于 MEDIUMTEXT 型態。
$table->morphs('taggable'); 加入整數 taggable_id 與字符串 taggable_type。
$table->nullableMorphs('taggable'); 與 morphs() 字段相同,但允許為NULL。
$table->nullableTimestamps(); 與 timestamps() 相同,但允許為 NULL。
$table->rememberToken(); 加入 remember_token 并使用 VARCHAR(100) NULL。
$table->smallIncrements('id'); 遞增 ID (主鍵) ,相當于「UNSIGNED SMALL INTEGER」型態。
$table->smallInteger('votes'); 相當于 SMALLINT 型態。
$table->softDeletes(); 加入 deleted_at 字段用于軟刪除操作。
$table->string('email'); 相當于 VARCHAR 型態。
$table->string('name', 100); 相當于 VARCHAR 型態,并帶有長度。
$table->text('description'); 相當于 TEXT 型態。
$table->time('sunrise'); 相當于 TIME 型態。
$table->timeTz('sunrise'); 相當于 TIME (帶時區) 形態。
$table->tinyInteger('numbers'); 相當于 TINYINT 型態。
$table->timestamp('added_on'); 相當于 TIMESTAMP 型態。
$table->timestampTz('added_on'); 相當于 TIMESTAMP (帶時區) 形態。
$table->timestamps(); 加入 created_at 和 updated_at 字段。
$table->timestampsTz(); 加入 created_at and updated_at (帶時區) 字段,并允許為NULL。
$table->unsignedBigInteger('votes'); 相當于 Unsigned BIGINT 型態。
$table->unsignedInteger('votes'); 相當于 Unsigned INT 型態。
$table->unsignedMediumInteger('votes'); 相當于 Unsigned MEDIUMINT 型態。
$table->unsignedSmallInteger('votes'); 相當于 Unsigned SMALLINT 型態。
$table->unsignedTinyInteger('votes'); 相當于 Unsigned TINYINT 型態。
$table->uuid('id'); 相當于 UUID 型態。

 

字段修飾

Schema::table('users', function (Blueprint $table) {  $table->string('email')->nullable();});

 

Modifier Description
->after('column') 將此字段放置在其它字段「之后」(僅限 MySQL)
->comment('my comment') 增加注釋
->default($value) 為此字段指定「默認」值
->first() 將此字段放置在數據表的「首位」(僅限 MySQL)
->nullable() 此字段允許寫入 NULL 值
->storedAs($expression) 創建一個存儲的生成字段 (僅限 MySQL)
->unsigned() 設置 integer 字段為 UNSIGNED
->virtualAs($expression) 創建一個虛擬的生成字段 (僅限 MySQL)

 

字段更新

Schema::table('users', function (Blueprint $table) {  $table->string('phone',20)->change();  $table->string('username',60)->->nullable()->change();});

重命名字段

Schema::table('users', function (Blueprint $table) {  $table->renameColumn('from', 'to');});

字段移除

Schema::table('users', function (Blueprint $table) {  $table->dropColumn(['last_ip', 'last_login']);});

在使用字段更新,重命名字段,字段移除之前,請務必在你的 composer.json文件require鍵名中添加< "doctrine/dbal": "^2.5">值。然后composer update進行更新或

composer require doctrine/dbal

創建索引

$table->string('email')->unique();

 

Command Description
$table->primary('id'); 加入主鍵。
$table->primary(['first', 'last']); 加入復合鍵。
$table->unique('email'); 加入唯一索引。
$table->unique('state', 'my_index_name'); 自定義索引名稱。
$table->unique(['first', 'last']); 加入復合唯一鍵。
$table->index('state'); 加入基本索引。

 

開啟和關閉外鍵約束

Schema::enableForeignKeyConstraints();Schema::disableForeignKeyConstraints();

運行遷移

php artisan migrate

在線上環境強制執行遷移

php artisan migrate --force

回滾遷移

若要回滾最后一次遷移,則可以使用 rollback 命令。此命令是對上一次執行的「批量」遷移回滾,其中可能包括多個遷移文件:

php artisan migrate:rollback

在 rollback 命令后加上 step 參數,你可以限制回滾遷移的個數。例如,下面的命令將會回滾最后的 5 個遷移。

php artisan migrate:rollback --step=5

migrate:reset 命令可以回滾應用程序中的所有遷移:

php artisan migrate:reset

使用單個命令來執行回滾或遷移

migrate:refresh 命令不僅會回滾數據庫的所有遷移還會接著運行 migrate 命令。所以此命令可以有效的重新創建整個數據庫:

php artisan migrate:refresh// 刷新數據庫結構并執行數據填充php artisan migrate:refresh --seed

使用 refresh 命令并加上 step 參數,你也可以限制執行回滾和再遷移的個數。比如,下面的命令會回滾并再遷移最后的 5 個遷移:

php artisan migrate:refresh --step=5

無法生成遷移文件

在 Laravel 項目中,由于測試,有時候用 PHP artisan make:migration create_xxx_table 創建數據庫遷移。如果把創建的遷移文件 database/migrations/2017_07_30_133748_create_xxx_table.php 文件給刪除了,再次執行 php artisan make:migration create_xxx_table 會報錯:

 

復制代碼 代碼如下:

[ErrorException]                                                                                                                                         
 include(E:/laraver/vendor/composer/../../database/migrations/2017_07_30_133748_create_users_table.php): failed to open stream: No such file or directory 

 

重新運行 composer update 又可以執行上面的命令了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲免费福利视频| 国产色婷婷国产综合在线理论片a| 日韩精品免费观看| 欧美激情一区二区三区在线视频观看| 久久久久在线观看| 91精品国产综合久久香蕉的用户体验| 日韩精品在线观看一区| 亚洲网站在线播放| 亚洲国产精品va在线看黑人| 久久99精品视频一区97| 日韩亚洲一区二区| 欧美激情精品久久久久| 精品久久在线播放| 欧美国产日韩在线| 黄网站色欧美视频| 国产午夜精品全部视频播放| 国产精品视频久久| 日韩专区在线播放| 久久精品久久久久| 91精品国产高清自在线| 日韩欧美在线看| 青青久久av北条麻妃黑人| 性色av一区二区三区红粉影视| 久久视频在线观看免费| 亚洲国产精品va在线看黑人动漫| 亚洲xxxx18| 久久久久久久97| 2019亚洲男人天堂| 77777少妇光屁股久久一区| 亚洲天堂免费观看| 亚洲人成在线电影| 91国偷自产一区二区三区的观看方式| 91精品国产色综合久久不卡98口| 77777少妇光屁股久久一区| 欧美国产日产韩国视频| 欧美二区乱c黑人| 久久久精品日本| 夜夜嗨av一区二区三区四区| 国产精品第三页| 欧美丰满片xxx777| 精品日韩美女的视频高清| 国产美女久久精品| 亚洲精品女av网站| 色综合老司机第九色激情| 国产日韩欧美中文在线播放| 成人亚洲欧美一区二区三区| 亚洲精品美女在线观看播放| 精品亚洲国产视频| 成人免费黄色网| 啊v视频在线一区二区三区| 国产精品无码专区在线观看| 在线视频亚洲欧美| 欧美日韩亚洲天堂| 91久久精品国产91久久| 久久久精品一区二区| 最新国产成人av网站网址麻豆| 欧美亚洲视频一区二区| 亚洲综合av影视| 疯狂做受xxxx欧美肥白少妇| 伊人久久免费视频| 亚洲精品久久久久久久久久久久| 欧美激情视频一区二区三区不卡| 久久频这里精品99香蕉| 色一情一乱一区二区| 国产精品91一区| 国产精品久久久久久久av大片| 在线中文字幕日韩| 欧美大片在线免费观看| 日本a级片电影一区二区| 欧美一级视频免费在线观看| 欧美在线免费视频| 91久久精品国产91久久性色| 亚洲自拍小视频免费观看| 欧美成人亚洲成人| 亚洲欧美国产精品| 久久精品亚洲热| 欧美激情一区二区三级高清视频| 人九九综合九九宗合| 自拍偷拍亚洲欧美| 在线播放精品一区二区三区| 久久中文久久字幕| 精品国产一区二区三区久久狼5月| 亚洲网站在线观看| 国产精品视频xxxx| 亚洲网站视频福利| 亚洲情综合五月天| 亚洲wwwav| 亚洲精品一区二区三区婷婷月| 久久精品美女视频网站| 亚洲成人av片| 欧美伊久线香蕉线新在线| 国产精品美女久久久久久免费| 欧美大尺度激情区在线播放| 亚洲老板91色精品久久| 九九热精品在线| 91精品国产91久久久久久吃药| 岛国av一区二区| 久久香蕉频线观| 亚洲va欧美va国产综合剧情| 亚洲精品欧美日韩专区| 国产精品成人一区二区三区吃奶| 最近的2019中文字幕免费一页| 亚洲欧美日韩一区二区三区在线| 欧美性少妇18aaaa视频| 久久久噜噜噜久久久| 久久久天堂国产精品女人| 久久亚洲精品一区| 日韩中文字幕网| 欧美洲成人男女午夜视频| 亚洲伊人一本大道中文字幕| 欧美激情综合亚洲一二区| 国产精品99久久久久久久久| 操日韩av在线电影| 国产成人高潮免费观看精品| 国产精品欧美一区二区| 欧美大胆a视频| 久久亚洲精品国产亚洲老地址| 亚洲成人aaa| 欧美国产一区二区三区| 日韩电影大全免费观看2023年上| 91精品国产自产91精品| 亚洲成年人影院在线| 日韩国产欧美精品在线| 奇米4444一区二区三区| 亚洲国产婷婷香蕉久久久久久| 91香蕉嫩草神马影院在线观看| 成人日韩av在线| 欧美激情奇米色| 国产精品视频永久免费播放| 亚洲国产小视频| 精品国内自产拍在线观看| 精品福利一区二区| 久久五月天色综合| 日韩av免费在线观看| 国产欧美婷婷中文| 国产精品极品美女粉嫩高清在线| 亚洲一区二区三区久久| 亚洲一区二区三区视频| 欧美日韩国产精品专区| 久久青草精品视频免费观看| 欧美精品在线极品| 亚洲日本成人女熟在线观看| 国产精品私拍pans大尺度在线| 日本一欧美一欧美一亚洲视频| 久久福利网址导航| 国产精品va在线| 亚洲黄色片网站| 亚洲天堂av高清| 91高清免费在线观看| 久久精品亚洲国产| 成人欧美在线视频| 精品无人区太爽高潮在线播放| 国产精品夜间视频香蕉| 91精品国产综合久久香蕉最新版| 久青草国产97香蕉在线视频| 国产综合色香蕉精品| 国产精品一区二区三区成人| 九九热99久久久国产盗摄| 九九热r在线视频精品| 91国产美女视频| 亚洲bt天天射| 欧美亚洲国产日韩2020| 国产成人在线播放| 66m—66摸成人免费视频|