数据初始化
- 创建数据迁移文件
php artisan make:migration seed_categories_data
- 编写数据迁移文件
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class SeedCategoriesData extends Migration
{
public function up()
{
$categories = [
[
'name' => '分享',
'description' => '分享创造,分享发现',
],
[
'name' => '教程',
'description' => '开发技巧、推荐扩展包等',
],
[
'name' => '问答',
'description' => '请保持友善,互帮互助',
],
[
'name' => '公告',
'description' => '站点公告',
],
];
DB::table('categories')->insert($categories);
}
public function down()
{
DB::table('categories')->truncate();
}
}
假数据填充
- 数据模型 User.php
- 用户的数据工厂
- 编辑database/factories/UserFactory.php
use Faker\Generator as Faker;
$factory->define(App\Models\User::class, function (Faker $faker) {
static $password;
$now = Carbon::now()->toDateTimeString();
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
//随机生成小段落
'introduction' => $faker->sentence(),
'created_at' => $now,
'updated_at' => $now,
];
});
- 用户的数据填充 database/seeds/UsersTableSeeder.php
- 执行以下命令填充数据
php artisan make:seed UsersTableSeeder
- 编辑database/seeds/UsersTableSeeder.php
use Illuminate\Database\Seeder;
use App\Models\User;
class UsersTableSeeder extends Seeder
{
public function run()
{
// 获取 Faker 实例
$faker = app(Faker\Generator::class);
// 头像假数据
$avatars = [
'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/s5ehp11z6s.png?imageView2/1/w/200/h/200',
'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/Lhd1SHqu86.png?imageView2/1/w/200/h/200',
'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/LOnMrqbHJn.png?imageView2/1/w/200/h/200',
'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/xAuDMxteQy.png?imageView2/1/w/200/h/200',
'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/ZqM7iaP4CR.png?imageView2/1/w/200/h/200',
'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/NDnzMutoxX.png?imageView2/1/w/200/h/200',
];
// 生成数据集合
$users = factory(User::class)
->times(10)
->make()
->each(function ($user, $index)
use ($faker, $avatars)
{
// 从头像数组中随机取出一个并赋值
$user->avatar = $faker->randomElement($avatars);
});
// 让隐藏字段可见,并将数据集合转换为数组
$user_array = $users->makeVisible(['password', 'remember_token'])->toArray();
// 插入到数据库中
User::insert($user_array);
// 单独处理第一个用户的数据
$user = User::find(1);
$user->name = 'Summer';
$user->email = 'summer@yousails.com';
$user->avatar = 'https://fsdhubcdn.phphub.org/uploads/images/201710/14/1/ZqM7iaP4CR.png?imageView2/1/w/200/h/200';
$user->save();
}
}
- 注册数据填充 database/seeds/DatabaseSeeder.php
- 编辑database/seeds/DatabaseSeeder.php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UsersTableSeeder::class);
}
}
- 执行以下命令生成数据
php artisan db:seed
//如果已经执行过以上命令可以使用以下命令
php artisan migrate:refresh --seed
网友评论