溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

laravel如何更改表結(jié)構(gòu)

發(fā)布時間:2021-12-31 12:16:44 來源:億速云 閱讀:217 作者:小新 欄目:編程語言

這篇文章主要介紹laravel如何更改表結(jié)構(gòu),文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

laravel更改表結(jié)構(gòu)的方法:1、生成migration文件;2、執(zhí)行命令“php artisan make:migration...”;3、添加“$table->text('images')->nullable()...”即可。

本文操作環(huán)境:Windows7系統(tǒng)、Laravel5.7版、Dell G3電腦。

使用 laraval migration 修改數(shù)據(jù)庫表結(jié)構(gòu)

之前一直使用 sql 文件來保存并跟蹤數(shù)據(jù)庫表結(jié)構(gòu)的變化。但是使用 sql 文件有以下弊端:

  • 無法判斷哪些 sql 文件執(zhí)行了,哪些沒執(zhí)行。雖然加了日期做為 sql 文件名前綴,但是在多人開發(fā),且長時間沒有更新線上數(shù)據(jù)表結(jié)構(gòu)時,經(jīng)常要撓頭

  • 執(zhí)行 sql 文件是件體力活。當(dāng)你面對十幾個 sql alter 文件時,逐個執(zhí)行非常累心。

  • 多套開發(fā)、生產(chǎn)環(huán)境同步起來還是費(fèi)時費(fèi)力。例如,PC 開發(fā)機(jī)上進(jìn)行了一次修改,還要同步到筆記本開發(fā)環(huán)境上,想想都難受。

這些問題,遠(yuǎn)不如執(zhí)行一行 migration 來的痛快。

增加一個新字段

例如,我要給 articles 表增加一個 images 字段。

首先需要生成 migration 文件,執(zhí)行命令

php artisan make:migration add_images_to_articles_table --table=articles

輸出結(jié)果為

Created Migration: 2018_03_21_225819_add_images_to_articles_table

對應(yīng)的 database/migrations/ 目錄下會自動生成一個文件

database/migrations/2018_03_21_225819_add_images_to_articles_table.php

可以看到文件名前面綴上了日期和時間。

public function up()
{
Schema::table('articles', function (Blueprint $table) {
$table->text('images');
});
}

按照官方文檔,加上 images 字段,保存修改。執(zhí)行命令

php artisan migrate

輸出

Migrating: 2018_03_21_225819_add_images_to_articles_table
Migrated:  2018_03_21_225819_add_images_to_articles_table

這時查看數(shù)據(jù)表 migrations 會發(fā)現(xiàn)多了一行記錄。

laravel如何更改表結(jié)構(gòu)

然后就是把修改同步到生產(chǎn)環(huán)境了。唯一的區(qū)別就是,生產(chǎn)環(huán)境服務(wù)器上會要求確認(rèn)是否執(zhí)行該命令。

**************************************
*     Application In Production!     *
**************************************
 Do you really wish to run this command? (yes/no) [no]:
 > yes
Migrating: 2018_03_21_225819_add_images_to_articles_table
Migrated:  2018_03_21_225819_add_images_to_articles_table

修改字段

這不倉促發(fā)布造成了 500 錯誤

SQLSTATE[HY000]: General error: 1364 Field 'images' doesn't have a default value

只需要再新建一個 migration 文件即可,加入

$table->text('images')->nullable()->change();

線上再次執(zhí)行 migrate 即可解決。

以上是“l(fā)aravel如何更改表結(jié)構(gòu)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI