相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
Laravel中數(shù)據(jù)遷移與數(shù)據(jù)填充的詳細(xì)步驟
前言
這是一篇基礎(chǔ)教程,對標(biāo) Laravel 文檔中的數(shù)據(jù)遷移和數(shù)據(jù)填充,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹把。
關(guān)于Laravel數(shù)據(jù)庫遷移的理解
最初看到laravel框架中遷移的時候,會以為這個遷移是把數(shù)據(jù)從一個數(shù)據(jù)庫中遷到另一個數(shù)據(jù)庫中,又或者是從一個服務(wù)器遷移到另一個服務(wù)器中。我自己學(xué)習(xí)有一個學(xué)習(xí)方法叫做顧名思義,所以所述是我的第一反應(yīng),但是學(xué)了以后發(fā)現(xiàn)這個遷移不是我理解中的遷移,但又不知道為什么叫做遷移,所以去百科查了一下。
遷移是指已經(jīng)獲得的知識、技能,甚至方法和態(tài)度對學(xué)習(xí)新知識、新技能的影響。這種影響可能是積極的,也可能是消極的,前者叫正遷移或簡稱遷移,后者叫負(fù)遷移或干擾。遷移首先是使習(xí)得的經(jīng)驗得以概括化、系統(tǒng)化,形成一種穩(wěn)定的整合的心理結(jié)構(gòu),從而更好地調(diào)節(jié)人的行為,并能動地作用于客觀世界。遷移是向能力轉(zhuǎn)化的關(guān)鍵。能力的形成一方面依賴于知識、技能的掌握;另一方面也依賴于所掌握知識和技能的不斷概括化、系統(tǒng)化?!糜?60百科
看完上面的百科說明,其實才明白什么叫做數(shù)據(jù)庫遷移,總結(jié)一下,遷移是指某種影響,所以數(shù)據(jù)庫遷移是通過對遷移文件的修改對數(shù)據(jù)庫造成的影響,這種影響其實就是操作數(shù)據(jù)庫。
換句通俗的話說,是在laravel中有一個文件,這個文件中寫了laravel本身內(nèi)置的對數(shù)據(jù)庫的“命令“,例如可以創(chuàng)建修改刪除庫、表、字段。通過這些文件中的代碼,便可以通過版本控制達到控制數(shù)據(jù)庫的目的,至于如何通過文件操作數(shù)據(jù)庫,我們可以看文檔中的具體說明。
migration
Laravel 中提供了數(shù)據(jù)庫遷移的方式來管理數(shù)據(jù)庫,想象一個場景:在一個多人開發(fā)的項目中,你的同事修改了某個數(shù)據(jù)庫結(jié)構(gòu)并修改了代碼,通過 git 你可以即時的同步同事修改的代碼,但是數(shù)據(jù)庫結(jié)構(gòu),你只能通過手工的方式來復(fù)制同事修改的 SQL 語句,執(zhí)行以保證數(shù)據(jù)庫的結(jié)構(gòu)一致。那么,Laravel 中的數(shù)據(jù)庫遷移概念,就是用于解決團隊中保證數(shù)據(jù)庫結(jié)構(gòu)一致的方案。
migration 使用非常簡單,編寫一定的 php 代碼并執(zhí)行,那么 Laravel 就會自動的更新數(shù)據(jù)庫。假設(shè)你的同事要修改數(shù)據(jù)庫某個字段,那么只要編寫 php 代碼,接著你通過 git 更新了代碼,執(zhí)行 migrate 操作之后,你的數(shù)據(jù)庫結(jié)構(gòu)就和他的同步了。下面我們就來看具體的使用方法。
migrate
Laravel 把編寫數(shù)據(jù)庫改動的 php 代碼稱為遷移,可以通過 php artisan make:migration filename
的方式來創(chuàng)建遷移文件。假設(shè)你需要創(chuàng)建一張新的 user 表,那么你可以通過執(zhí)行 php artisan make:migration create_user_table --create=user
來創(chuàng)建一個遷移文件,執(zhí)行命令會在 database/migrations/ 目錄下建立一個 文件創(chuàng)建時間_filename 的 php 文件,那么這個文件就是我們接下來用來編寫數(shù)據(jù)庫結(jié)構(gòu)變化的文件了。這里要提一點,雖然說創(chuàng)建遷移文件的名稱可以隨意,但是為了管理方便,最好文件名可以體現(xiàn)要執(zhí)行的數(shù)據(jù)庫操作,比如這里我們要創(chuàng)建一張 user 表,所以文件名稱為 create_user_table。
php artisan make:migration filename 有兩個可選參數(shù)
- --create=tablename 表明該遷移是用來創(chuàng)建表。
- --table=tablename 表明該遷移是用來對 tablename 這張表進行操作。
我們創(chuàng)建出來的遷移文件 create_user_table 會包含兩個方法。
public function up() { Schema::create('user', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('user'); }