【问题标题】:Command "make:seeder" is not defined in laravel 5.0laravel 5.0 中未定义命令“make:seeder”
【发布时间】:2016-09-21 08:11:03
【问题描述】:

得到错误:

[无效参数异常]
命令“make:seeder”未定义。
您的意思是其中之一吗?
数据库:种子
制作:迁移
制作:控制器
制作:中间件
制作:请求
制作:供应商
制作:控制台
制作:事件
品牌:型号
制作:命令

我的 laravel 版本是 5.0.我已经运行了 php artisan make:seeder SettingTableSeeder。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    php artisan make:seeder 命令是在 Laravel 5.1 中引入的,所以它在 Laravel 5.0 中不起作用

    你需要运行另一个命令:

    要为您的数据库播种,您可以在 Artisan CLI 上使用 db:seed 命令:php artisan db:seed

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

    您还可以使用migrate:refresh 命令为您的数据库播种,该命令还将回滚并重新运行您的所有迁移:php artisan migrate:refresh --seed

    取自 Laravel 文档: https://laravel.com/docs/5.0/migrations#database-seeding


    如何创建种子

    Laravel 还提供了一种简单的方法,可以使用种子类为您的数据库添加测试数据。所有种子类都存储在database/seeds 中。种子类可以有任何你想要的名字,但可能应该遵循一些合理的约定,例如UserTableSeeder 等。默认情况下,为你定义了一个DatabaseSeeder 类。在这个类中,您可以使用call 方法来运行其他种子类,从而可以控制播种顺序。

    将此添加到database/seeds/seedsfilename.php 中的文件中。

    class DatabaseSeeder extends Seeder {
    
        public function run()
        {
            $this->call('UserTableSeeder');
    
            $this->command->info('User table seeded!');
        }
    
    }
    
    class UserTableSeeder extends Seeder {
    
        public function run()
        {
            DB::table('users')->delete();
    
            User::create(['email' => 'foo@bar.com']);
        }
    
    }
    

    之后,您需要运行 composer dump-autoloadcomposer dumpautoload(它的作用相同,但只是另一个名称)。

    【讨论】:

    • 感谢回复,但我需要制作/创建播种器表
    • 感谢您的回复,所以最后我们必须创建自己的权利? @Robin Dirksen
    【解决方案2】:

    make:seeder artisan 调用是在 Laravel 5.1 中引入的,因此您必须手动编写它们或升级它们。

    【讨论】:

      猜你喜欢
      • 2016-10-22
      • 1970-01-01
      • 2019-11-11
      • 2020-01-06
      • 2020-01-11
      • 1970-01-01
      • 2015-04-06
      • 2016-07-16
      • 2020-02-21
      相关资源
      最近更新 更多