Laravel 4 db 种子特定播种器文件

Posted

技术标签:

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

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

谢谢。

【问题讨论】:

【参考方案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
        ]);
    

【讨论】:

以上是关于Laravel 4 db 种子特定播种器文件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel DB Seeder 不会在控制台中播种

播种数据库后的laravel种子回滚

Laravel 迁移外键取决于种子数据

迁移后的 Laravel 种子

Model Factory 和 Laravel 中的 DB 播种机有啥区别?

使用 Laravel DB 播种错误禁用 TRIGGER ALL