怎樣快速搞定laravel資料填充與資料遷移

千鋒Python唐小強發表於2020-07-09

專案開發時,一般都會有到專案測試資料的準備操作,以前都是基於PHP程式碼自主編寫sql語句,然後迴圈的插入到資料庫中裡面,噹噹我們接觸過laravel資料庫後,就可以很方便的完成專案的測試資料準備。

資料遷移

1. 建立資料遷移檔案

系統為我們準備了非常方便的artisan命令列工具,直接進行建立即可。使用命令:


#格式是固定的 create_表名_table  注意表名必須加s,不然執行遷移時會報錯

php artisan make:migration create_articles_table
怎樣快速搞定laravel資料填充與資料遷移

執行命令後,我們可以發現,database/migrations資料夾中多了一個檔案。

怎樣快速搞定laravel資料填充與資料遷移

開啟新檔案,裡面有兩個方法up和down,就是一個對應建立資料庫,一個對應刪除。

2. 修改遷移檔案

我們可以在裡面新增欄位,常見的欄位我給大家羅列出來

$table->id();
//id  預設主鍵,自增

$table->tinyInteger( 'cate_id'); //相當於 TINYINT
$table->smallInteger( 'posts'); //相當於 SMALLINT
$table->integer( 'votes'); //相當於 INT
$table->char( 'name', 4); //定長字串,相當於帶長度的 CHAR
$table->string( 'title', 100); //變長字串,相當於帶長度的 VARCHAR
$table->text( 'description'); //長文字資料
$table->longText( 'description'); //超長文字資料
$table->timestamps(); //相當於可空的 created_at 和 updated_at TIMESTAMP
怎樣快速搞定laravel資料填充與資料遷移

裡面還有限制欄位的 「修飾符」,可以直接連線在欄位後面,進行鏈式操作。常用的修飾符有:

->nullable()	        此欄位允許寫入 
NULL
->unique()              欄位唯一
->default($value) 為欄位指定 “預設” 值
->comment( 'my comment') 為欄位增加註釋
->autoIncrement() 將 INTEGER 型別的欄位設定為自動遞增的主鍵

3. 執行遷移

執行遷移命令即可生成資料表。


php artisan migrate

注:強制執行遷移可在命令後面加上–force(不建議使用)

php artisan migrate 
--force

怎樣快速搞定laravel資料填充與資料遷移

4. 回滾遷移

有時候,我們發現剛建立完的遷移缺少欄位,或者有修改的地方,這時候就可以先回滾一下,然後再次執行遷移命令即可。


php 
artisan 
migrate
:rollback

系統還提供了回滾幾步的操作,直接在後面加上 --step=步數 即可,最多五步。

php artisan migrate:
rollback 
--step=2

怎樣快速搞定laravel資料填充與資料遷移

系統還提供了幾個便捷的遷移命令:


#migrate
:reset 命令將會滾回你應用程式所有的遷移:

php artisan migrate :reset

#migrate :refresh 命令將會在回滾你所有的遷移後執行 migrate 命令
php artisan migrate :refresh

#migrate :fresh 命令將會刪除資料庫中所有的資料表並在之後執行 migrate 命令
php artisan migrate :fresh

這些都可以結合需要自行使用,有資料的情況下使用refresh,沒有資料的情況下,直接使用fresh,更為快捷。

資料填充

注意:laravel框架中已經內建了資料填充依賴包,不用安裝,如果在其他專案中需要使用資料填充,可以安裝使用。

composer 
require fzaninotto/faker

建立模型和資料遷移

因為資料填充是要配合模型來實現的,所以這裡要建立模型,然後包含資料遷移,資料填充檔案。

php artisan 
make:model Models/Article -a

修改遷移檔案後,執行遷移建立資料表


php artisan migrate

修改ArticleFactory.php模型工廠檔案

對應資料庫的欄位,如果是手動建立該檔案需要use對應模型

怎樣快速搞定laravel資料填充與資料遷移

修改seeder檔案

在run 方法中新增,呼叫剛才寫好的模型工廠方法,注意這裡需要use模型



<?php


use App\Models\Article;
use Illuminate\ Database\ Seeder;

class ArticleSeeder extends Seeder
{
    /**
    * Run the database seeds.
    *
    * @return void
    */
    public function run ()
   {
       factory(Article::class, 50)->create();
   }
}

注意:Faker 生成的資料預設是英文,可以在 config/app.php 中將 faker_locale 設定為 zh_CN;

呼叫Seeders

在DatabaseSeeders檔案run方法中新增一行

$
this->call(ArticleSeeder::

class);

如果有多個的時候可以使用數字方式

$
this->call([

       UserSeeder:: class,
        PostSeeder::class,
        CommentSeeder::class,
    ]);

執行資料填充

完成 seeder 類的編寫之後,你可能需要使用 dump-autoload 命令重新生成 Composer 的自動載入器:

composer 
dump-autoload

然後執行填充命令,可以執行db:seed


php 
artisan 
db
:seed

還可以直接執行migrate --seed

php artisan migrate 
--seed

怎樣快速搞定laravel資料填充與資料遷移

這時候,我們開啟資料庫檢視,發現內容已經填充進去啦。

怎樣快速搞定laravel資料填充與資料遷移

大家可以一起交流!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2703589/,如需轉載,請註明出處,否則將追究法律責任。

相關文章