共计 2524 个字符,预计需要花费 7 分钟才能阅读完成。
在开发环境中,我们经常会使用“模拟数据”来测试我们应用,在 laravel 中 提供了”数据填充“来帮助我们实现这个需求。我们现在就来用这个功能来创建 20 个用户 …
1. 使用 artisan 命令生成 用户表
1.1 打开新创建的 laravel 项目 database/migrations 目录 下可以发现 两个文件 一个是创建用户表的,一个是创建确认密码表的(图中没看到是因为我删除了)
1.2 我们可以打开这个文件瞧瞧 (根据实际情况修改,这里我就不修改了)
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{Schema::create('users', function (Blueprint $table) {$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{Schema::dropIfExists('users');
}
}
1.3 执行 artisan 命令 生成表
php artisan migrate
于是生成了 users 表
2. 生成 seed 文件,并且修改
2.1 使用 artisan 命令生成 UsersTableSeeder.php 文件
php artisan make:seed UsersTableSeeder
命令执行后,我们可以在 database/seeds 目录下发现多了个我们创建的 UsersTableSeeder.php 文件
我们打开这个文件:
<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{}}
接着我们修改一下这个文件(创建 20 个用户):
<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
// 使用 factory 来创建模拟数据
factory(\App\User::class,20)->create();}
}
同目录下还有个 DatabaseSeeder.php 文件,我们需要 让这个文件 执行 我们这个新创建的 UsersTableSeeder.php 文件,所以需要把 run 方法中的 $this->call(UsersTableSeeder::class) 的注释取消掉
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{$this->call(UsersTableSeeder::class);
}
}
3. 填充数据
3.1 database/factories 目录下有 个 UserFactory.php 文件,修改为(根据实际情况):
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;
use Illuminate\Support\Str;
use Faker\Generator as Faker;
/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/
$factory->define(User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => bcrypt('123456'), // password
'remember_token' => Str::random(10),
];
});
3.2 生成模拟数据, 执行以下 artisan 命令:
php artisan db:seed
打开 users 表可以发现新创建了 20 条用户数据:
4. 总结
这样就可以生成模拟数据啦,是不是很简单呢~~~ 如果有帮助到你,给个赞呗!
特别声明: 本人只是菜鸟,记录一下平时学习笔记,高手莫喷,谢谢!