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

Posted

技术标签:

【中文标题】Laravel DB Seeder 不会在控制台中播种【英文标题】:Laravel DB Seeder won't seed in console 【发布时间】:2018-04-19 22:30:27 【问题描述】:

您好,我正在尝试播种以下播种机类。当我运行 php artisan db:seed 命令时,唯一的种子是我几周前创建的上一个播种器类。我不知道我错过了什么。我还插入了 SoftDeletes 和 Protected 可填充项。

这是我的播种机类:

    public function run()

    DB::table('leave_type')->insert([
      [
        'leaveType' => 'Vacation Leave'
      ],
      [
        'leaveType' => 'Sick Leave'
      ],
      [
        'leaveType' => 'Afternoon Off'
      ],
      [
        'leaveType' => 'Special Leave'
      ],
      [
        'leaveType' => 'Study Leave'
      ],
    ]);

我的模特:

    namespace App;

    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\SoftDeletes;

    class LeaveType extends Model
     
       protected $fillable = ['leaveType'];
       protected $table ="leave_type";
       use SoftDeletes;
       public $timestamps = true;
    

【问题讨论】:

首先运行 composer dump-auto,然后运行 ​​db:seed - laravel 可能还不知道新的播种器类。还要确保您的播种机已注册。 您是否将播种机添加到DatabaseSeeder.php 那是我忘记的!谢谢 - 没有将它添加到数据库播种器类。 模型没问题。但是你没有使用模型 【参考方案1】:

将我的评论转换为回答;

    确保 laravel 知道您通过运行以下命令生成的新数据库播种器类:

作曲家转储自动

    确保您的播种器类已在 PROJECT/database/seeds/DatabaseSeeder.php 中注册,如下所示:

$this->call(YourNewSeeder::class);

然后您可以刷新数据库(回滚所有迁移,重新运行迁移)并使用以下命令一次性运行播种机:

php artisan migrate:refresh --seed

或者只像这样运行特定的播种器:

php artisan db:seed --class=YourNewSeeder

【讨论】:

php artisan migrate:refreh --seed 中的小错字,应该是refresh

以上是关于Laravel DB Seeder 不会在控制台中播种的主要内容,如果未能解决你的问题,请参考以下文章

laravel的seeder数据填充

Laravel 5.* 执行seeder命令出现错误的解决方法

在文件夹中调用 Laravel Seeder

Laravel5 使用 JSON 和 Seeder 提供数据库

Laravel 5:找不到 DB 种子类

如何将 Laravel 数据表里的数据导出成 Seeder 文件