Laravel 生成假資料步驟

EwenSal發表於2018-09-20
  1. 生成資料模型
    我們為資源推薦模型取名 Link ,使用命令列新建模型,順便建立資料庫遷移:

$ php artisan make:model Models/Link -m
修改資料庫遷移檔案為以下:

{timestamp}_create_links_table

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateLinksTable extends Migration
{
public function up()
{
Schema::create('links', function (Blueprint $table) {
$table->increments('id');
$table->string('title')->comment('資源的描述')->index();
$table->string('link')->comment('資源的連結')->index();
$table->timestamps();
});
}

public function down()
{
    Schema::dropIfExists('links');
}

}
執行資料庫遷移生成表結構:

$ php artisan migrate
基於過去的經驗,我們知道還需要定義模型的 $fillable 欄位,否則將無法更新資料:

app/Models/Link.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Link extends Model
{
protected $fillable = ['title', 'link'];
}

  1. 生成假資料
    第一步:生成資料工廠
    $ php artisan make:factory LinkFactory
    修改為以下:

database/factories/LinkFactory.php

<?php

use Faker\Generator as Faker;

$factory->define(App\Models\Link::class, function (Faker $faker) {
return [
'title' => $faker->name,
'link' => $faker->url,
];
});
第二步:生成填充類
$ php artisan make:seeder LinksTableSeeder
修改為以下:

database/seeds/LinksTableSeeder.php

<?php

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

class LinksTableSeeder extends Seeder
{
public function run()
{
// 生成資料集合
$links = factory(Link::class)->times(6)->make();

    // 將資料集合轉換為陣列,並插入到資料庫中
    Link::insert($links->toArray());
}

}
第三步:註冊 DatabaseSeeder
新增呼叫:

database/seeds/DatabaseSeeder.php

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call(UsersTableSeeder::class);
$this->call(TopicsTableSeeder::class);
$this->call(ReplysTableSeeder::class);
$this->call(LinksTableSeeder::class);
}
}
第四步:重新生成資料
重新整理資料庫,然後重新生成資料:

$ php artisan migrate:refresh --seed

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章