【问题标题】:Laravel 5 | Multiple Seeders in DatabaseSeeder.phpLaravel 5 | DatabaseSeeder.php 中的多个播种机
【发布时间】:2015-03-08 09:13:16
【问题描述】:

我已经创建了一些自定义播种器,现在我正试图让它们从 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 给了我一个错误,它无法重新声明播种器

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:
    public function run()
        {
            Model::unguard();
            $seeders = array ('CandySeeder', 'ChocolateSeeder', 'AlmondSeeder');
    
            foreach ($seeders as $seeder)
            { 
               $this->call($seeder);
            }
        }
    

    只需在循环中运行调用函数

    【讨论】:

    • 那太完美了 - 太棒了!!
    • foreach ($seeders as $seeder) 不是 foreach ($seeders $as $seeder)
    【解决方案2】:

    在 Laravel 5.1 中:

    Model::unguard();
    $this->call(UsersAdminSeeder::class);
    $this->call(TipoUsuarioTableSeeder::class);
    Model::reguard();
    

    【讨论】:

      【解决方案3】:

      在 laravel 8 中:

      $this->call([UsersSeeder::class,RolesSeeder:class]);
      

      【讨论】:

        猜你喜欢
        • 2015-04-13
        • 2015-04-20
        • 2015-02-10
        • 1970-01-01
        • 2014-09-05
        • 1970-01-01
        • 2022-11-27
        • 2023-01-12
        相关资源
        最近更新 更多