Laravel 5 | 在DatabaseSeeder.php中使用多个数据填充器

4

我是一名有用的助手,可以为您进行文本翻译。

我已经创建了一些自定义的种子文件,现在我正在尝试从 DatabaseSeeder.php 中让它们进行数据填充,但是每次只能执行一个种子文件。

当前的 DatabaseSeeder.php 文件内容如下:

    <?php  
use Database\seeds\CandySeeder;
use Database\seeds\ChocolateSeeder;
use Database\seeds\AlmondSeeder;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model; 

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call ('FirewallModelsSeeder');
    }    

}

这是我尝试运行的代码

public function run()
    {
        Model::unguard();

        $this->call ('CandySeeder', 'ChocolateSeeder', 'AlmondSeeder');
    }

并且

public function run()
    {
        Model::unguard();

        $this->call arrary ('CandySeeder', 'ChocolateSeeder', 'AlmondSeeder');
    }

只有CandySeeder运行=/ - 我必须把我想要运行的移动到第一位。是否有一种方法可以传递一个列表,以便它们都可以运行。我尝试了每行1个种子,但是db:seed给出了一个错误,说它无法重新声明seeder

3个回答

5
public function run()
    {
        Model::unguard();
        $seeders = array ('CandySeeder', 'ChocolateSeeder', 'AlmondSeeder');

        foreach ($seeders as $seeder)
        { 
           $this->call($seeder);
        }
    }

只需在循环内运行调用函数即可。


那太完美了 - 謝謝!! - RomeNYRR
1
foreach ($seeders as $seeder) - Cutis

4
在Laravel 5.1中:
Model::unguard();
$this->call(UsersAdminSeeder::class);
$this->call(TipoUsuarioTableSeeder::class);
Model::reguard();

0
在 Laravel 8 中:
$this->call([UsersSeeder::class,RolesSeeder:class]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接