Laravel 5.3 db:seed 命令根本不起作用

Posted

技术标签:

【中文标题】Laravel 5.3 db:seed 命令根本不起作用【英文标题】:Laravel 5.3 db:seed command simply doesn't work 【发布时间】:2017-01-24 02:49:24 【问题描述】:

我做任何事都按部就班:

    安装了新的 Laravel 5.3.9 应用(我所有的非新应用都会产生相同的错误)

    运行php artisan make:auth

    为新表创建迁移 `php artisan make:migration create_quotations_table --create=quotations

    Schema::create('quotations', function (Blueprint $table) 
        $table->increments('id');
    
        $table->string('text');
    
        // my problem persists even with the below two columns commented out
        $table->integer('creator_id')->unsigned()->index('creator_id');
        $table->integer('updater_id')->unsigned()->index('updater_id');
    
        $table->softDeletes();
        $table->timestamps();
    );
    

    然后我运行php artisan migrate

    然后我定义一个新的种子php artisan make:seeder QuotationsTableSeeder

文件的完整内容,在我添加一个简单的插入之后:

<?php

use Illuminate\Database\Seeder;

class QuotationsTableSeeder extends Seeder

/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()

    DB::table('quotations')->insert([
        'text' => str_random(10),

    ]);


    然后我运行php artisan db:seed

问题

它根本不起作用。没有反馈,日志文件中没有错误。 探针在我的本地环境中都存在(Win7,最新的 WAMP 服务器) 和我的由 Ubuntu 16.04 驱动的 Digital Ocean VPS。 我在几个单独的应用程序中采取了上述所有步骤 - 没有结果。也在 Laragon 2.0.5 服务器下。

我尝试过的

php artisan optimizeas suggested here.

composer dump-autoloadphp artisan clear-compiled也没有带来任何结果

我也尝试按照官方文档示例进行播种 - 失败了。

我在种子文件中添加了use DB; - 仍然没有结果。

要做的事情

帮助!!!为什么它们不起作用?

【问题讨论】:

在我的情况下,当模块在子文件夹中并且想要直接运行而不运行其他播种器 php artisan db:seed --class=WM\Common\Seeder\SmsStatusSeeder 【参考方案1】:

您是否在DatabaseSeeder 类中调用您的播种机?这样:

database/seeds/DatabaseSeeder.php

class DatabaseSeeder extends Seeder

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    
        $this->call(QuotationTableSeeder::class);
    

或者,在使用php artisan db:seed 命令时添加--class 选项,这样:

php artisan db:seed --class="QuotationTableSeeder"

创建或删除播种器后,不要忘记运行以下命令:

composer dump-autoload

【讨论】:

对我来说它只适用于--class 选项,即使我将它添加到公共运行功能。任何想法为什么? 很高兴你回答了这个问题,这是文档第一次让我误入歧途。 很高兴能帮到你。 您必须在此之后将您创建的 Seeder 添加到 DatabaseSeeder $this-&gt;call(QuotationTableSeeder::class);,您可以调用 php artisan db:seed 是7.x,官方文档中没有。【参考方案2】:

注意: 请谨慎使用 DEV ENVIRONMENT 和/或 DISPOSABLE DATABASES ONLY

如果其他人同时遇到迁移和播种问题,请尝试

php artisan migrate:fresh --seed

为我工作..

【讨论】:

我不会推荐这个,因为这个命令会:drop all tables from the database and then execute the migrate command。这对某些人来说可能是灾难性的!

以上是关于Laravel 5.3 db:seed 命令根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

拉拉维尔 5.4。调用错误:php artisan db:seed

Laravel php artisan db:seed 导致“use”语句错误

Laravel 5.3 密码代理自定义

运行 rake db:seed 未从 seed.rb 加载

Lumen 5.6 - php artisan db:seed 出现错误“类 DatabaseSeeder 不存在”

我可以使用 php artisan db:seed 播种相关表吗?