原文地址:https://www.wjcms.net/archives/laravel小實體一文快速學會laravel資料填充
導語
專案開發時,一般都會有到專案測驗資料的準備操作,以前都是基于PHP代碼自主撰寫sql陳述句,然后回圈的插入到資料庫中里面,當當我們接觸過laravel資料庫后,就可以很方便的完成專案的測驗資料準備,
資料遷移
1. 創建資料遷移檔案
系統為我們準備了非常方便的artisan命令列工具,直接進行創建即可,
使用命令:
#格式是固定的 create_表名_table 注意表名必須加s,不然執行遷移時會報錯
php artisan make:migration create_articles_table

運行命令后,我們可以發現,database/migrations檔案夾中多了一個檔案,

打開新檔案,里面有兩個方法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

里面還有限制欄位的 「修飾符」,可以直接連接在欄位后面,進行鏈式操作,
常用的修飾符有:
->nullable() 此欄位允許寫入 NULL 值
->unique() 欄位唯一
->default($value) 為欄位指定 “默認” 值
->comment('my comment') 為欄位增加注釋
->autoIncrement() 將 INTEGER 型別的欄位設定為自動遞增的主鍵
3. 執行遷移
執行遷移命令即可生成資料表,
php artisan migrate
注:強制執行遷移可在命令后面加上--force(不建議使用)
php artisan migrate --force

4. 回滾遷移
有時候,我們發現剛創建完的遷移缺少欄位,或者有修改的地方,這時候就可以先回滾一下,然后再次執行遷移命令即可,
php artisan migrate:rollback
系統還提供了回滾幾步的操作,直接在后面加上 --step=步數 即可,最多五步,
php artisan migrate:rollback --step=2

系統還提供了幾個便捷的遷移命令:
#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對應模型

修改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

這時候,我們打開資料庫查看,發現內容已經填充進去啦,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/6575.html
標籤:PHP
上一篇:Swoole 協程簡介
下一篇:laravel 資料庫遷移時報錯

