Laravel :"php artisan db:seed" 不起作用

Laravel :"php artisan db:seed" doesn't work

我正在尝试 运行 "ServiceTableSeeder" table 在数据库中我收到一条错误消息。

我试试运行“php artisan db:seed

留言:

[symfony\component|Debug\Exception\FetalErrorException]
cannot redeclare DatabaseSeeder::run()

数据库播种器.php

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
     public function run()
     {
         Eloquent::unguard();
         $this->call('ServiceTableSeeder');

     }

}

ServiceTableSeeder.php

<?php

class ServiceTableSeeder extends Seeder {

  public function run()
  {
    Service::create(
      array(
        'title' => 'Web development',
        'description' => 'PHP, MySQL, Javascript and more.'
      )
    );

    Service::create(
      array(
        'title' => 'SEO',
        'description' => 'Get on first page of search engines with our help.'
      )
    );

  }
}

如何解决这个问题。我是 laravel 的新手,请指导我。

我认为问题出在您的 ServiceTableSeeder.php 文件上。您应该确保此文件中的 class 文件名是 ServiceTableSeeder 而不是 DatabaseSeeder

考虑到 Service 是您创建的一个模型,并且这个模型位于 App 文件夹内,在 App 命名空间内,试试这个:

修正你的 ServiceTableSeeder.php header:

<?php
use Illuminate\Database\Seeder;
use App\Service;

class ServiceTableSeeder extends Seeder {

  public function run()
  {
    Service::create(
      array(
        'title' => 'Web development',
        'description' => 'PHP, MySQL, Javascript and more.'
      )
    );

    Service::create(
      array(
        'title' => 'SEO',
        'description' => 'Get on first page of search engines with our help.'
      )
    );

  }
}

由于您已将模型移动到 app\models,因此您必须在每个模型文件中声明:

Models.php:

 namespace App\Models;

在你的种子文件中,使用:

 use App\Models\Service.php;

您是否使用 composer 自动加载文件?如果是这样,请更新您的 composer.json 文件以包含您的模型位置:

"autoload": {
    "classmap": [
        "database",
        "app/Models"
    ],
    "psr-4": {
        "App\": "app/"
    }
},

最后,运行 在你的命令行中:

composer dump-autoload

对于那些面临相同问题的人,请确认 .env 文件中的 APP_ENV 变量,因为 Laravel 不要让我们 运行 db:seed 如果我们设置

'APP_ENV = Production'

为了数据库记录。

因此,确保将 APP_ENV 的值设置为 'staging' 或 'local',然后 运行 php artisan db:seed