6

我正在学习“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

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

4

3 回答 3

6

尝试:

php artisan make:seeder BreedsTableSeeder

详情可见-Laravel 播种

于 2015-09-02T21:14:09.403 回答
0

几件事:

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

  2. 您将需要为 DB 类添加命名空间。它应该是 :

    使用 Illuminate\Support\Facades\DB;

于 2015-09-02T20:49:12.097 回答
0

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

于 2016-09-04T09:16:38.543 回答