Laravel 5 播种

Laravel 5 Seeding

我正在按照 "Laravel 5 Essentials." 中的教程进行操作 当我尝试使用命令

为我的数据库播种时

php artisan db:seed

我收到错误

[ReflectionException]
  Class BreedsTableSeeder does not exist

BreedsTableSeeder 的代码定义如下:

<?

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

class BreedsTableSeeder extends Seeder {

    public function run() 
    {
        DB:table('breeds')->insert([
        ['id' => 1, 'name' => "Domestic"],
        ['id' => 2, 'name' => "Persian"],
        ['id' => 3, 'name' => "Siamese"],
        ['id' => 4, 'name' => "Abyssinian"],
        ]);
    }
}

DatabaseSeeder 定义如下:

<?php

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

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        // $this->call(UserTableSeeder::class);
        $this->call('BreedsTableSeeder');
    }
}

1 当我在 Sublime 中加载示例代码时,我注意到 "DB" 有不同的颜色,这让我怀疑这与 DB 命名空间有关。因为我是Laravel的新手,所以我不确定应该在哪里定义DB。

我也试过执行

composer dump-autoload

但这没有用。有谁知道如何解决这个问题?谢谢!

几件事:

  1. 听起来您的播种机 class 由于某种原因没有添加到 class 地图中。要检查的地方是 /vendor/composer/autoload_classmap.php 文件。如果您在那里看到 class,它应该可以工作。如果您不这样做,则可能是某个时候更改了名称或出现其他问题,您可能需要手动添加它。

  2. 您需要为数据库添加命名空间 class。应该是:

    使用Illuminate\Support\Facades\DB;

尝试:

php artisan make:seeder BreedsTableSeeder

详情可查- Laravel seeding

您只需将 use Illuminate\Support\Facades\DB; 添加到 BreedsTableSeeder 文件的顶部。