【问题标题】:Laravel 4 db seed specific seeder fileLaravel 4 db 种子特定播种器文件
【发布时间】:2013-12-01 02:59:56
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: database laravel-4


    【解决方案1】:

    您可以通过类名来调用各个种子类。 来自docs

    默认情况下,db:seed 命令运行 DatabaseSeeder 类,该类 可用于调用其他种子类。但是,您可以使用 --class 选项指定要单独运行的特定播种器类:

    php artisan db:seed --class=ProductTableSeeder
    

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

    【讨论】:

    • 如果您为播种机命名,则需要以以下格式提供命名空间路径:Vendor\\Foo\\Seeders\\DatabaseSeeder
    • 如果您刚刚创建了新的播种机,请不要忘记运行composer dump-autoload。否则你会得到“Class XySeeder 不存在”
    【解决方案2】:

    这是一个使用类完整命名空间的工作示例:

    应该使用双反斜杠\\

    类名是DefaultBannersSeeder

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

    【讨论】:

      【解决方案3】:

      您还可以编辑您的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
              ]);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-27
        • 2013-08-24
        • 1970-01-01
        • 2014-09-07
        • 2013-08-21
        • 2018-09-05
        • 2014-11-12
        • 2017-09-09
        相关资源
        最近更新 更多