- 生成資料模型
我們為資源推薦模型取名 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'];
}
- 生成假資料
第一步:生成資料工廠
$ 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 協議》,轉載必須註明作者和本文連結