用 MySQL Dump 播种
按照之前创建种子的示例进行操作。此示例使用 MySQL Dump 为项目数据库中的表设定种子。必须在播种前创建该表。
<?php
use Illuminate\Database\Seeder;
class UserTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$sql = file_get_contents(database_path() . '/seeds/users.sql');
DB::statement($sql);
}
}
我们的$ sql 将成为 users.sql 转储的内容。转储应该有一个 INSERT INTO 语句。你将在哪里存储转储。在上面的例子中,它存储在项目目录\database\seeds
中。使用 laravel 的帮助函数 database_path()
并附加转储的目录和文件名。
INSERT INTO `users` (`id`, `name`, `email`, `password`, `remember_token`, `created_at`, `updated_at`) VALUES
(1, 'Jane', 'janeDoe@fakemail.com', 'superSecret', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00'),
(2, 'John', 'johnny@fakemail.com', 'sup3rS3cr3t', NULL, '2016-07-21 00:00:00', '2016-07-21 00:00:00');
一旦 Seeder 运行,DB::statement($sql)
将执行插入。与前面的示例一样,你可以将 UserTableSeeder
放在 laravel 提供的 DatabaseSeeder
类中:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(UserTableSeeder::class);
}
}
并从项目目录 php artisan db:seed
中的 CLI 运行。或者你可以使用 php artisan db:seed --class=UsersTableSeeder
为单个类运行 Seeder