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