Laravel 4分贝种子特定播种器文件

我有一个现有的用户表,其中包含来自 UserSeeder.php 的通过 db:seed播种的信息。现在,我正在添加新的产品表,并希望种子信息到产品表。如何防止 Laravel 将 UserSeeder 种子化到数据库中,而只将新的 ProductSeeder 种子化?

谢谢。

81702 次浏览

您可以通过它们的类名称来调用各个种子类。 来自 医生

默认情况下,db: eed 命令运行 DatabaseSeeder 类,该类 可用于调用其他种子类 —— class 选项指定要单独运行的特定播种器类:

php artisan db:seed --class=ProductTableSeeder

在上面的示例中,ProductTableSeeder类应该存在于 database/seeds中。

下面是一个使用类完整名称空间的工作示例:

应该使用双反斜杠 \\

类名为 DefaultBannersSeeder

php artisan db:seed --class=App\\Containers\\Banners\\Data\\Seeders\\DefaultBannersSeeder

您还可以编辑 database/seeders/DatabaseSeeder.php文件的 $this->call()指令:

<?php
namespace Database\Seeders;


use Illuminate\Database\Seeder;


class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call([
UserTableSeeder::class,
PermissionsSeeder::class
]);
}
}

我把播种机按照它们的意思放在文件夹里。 我有 LookupSeedersDemoSeedersTestSeeders..。

例如,我需要运行这个播种机 -project\database\seeds\LookupSeeders\CountrySeeder.php

这就是你可以做到这一点... 说从 project\tests\autoload.php文件

echo shell_exec('php artisan db:seed --class=LookupSeeders\\\\CountrySeeder');