在Laravel 5中运行Seeder时未找到模型类

时间:2016-07-25 15:36:20

标签: laravel laravel-5 model artisan seeding

我正在为我的应用创建一个Admin auth,并使用artisan命令生成模型:

php artisan make:model Admin -m

这是生成的类:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Admin extends Model
{
    //
}

这创建了一个空模型和一个基本迁移。我将这些行添加到迁移中:

public function up()
    {
        Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name', 32);
            $table->string('username', 32);
            $table->string('email', 320);
            $table->string('password', 64);            
            $table->string('remember_token', 100)->nullable();
            $table->timestamps();
        });
    }

然后我用命令行创建了一个播种器:

php artisan make:seeder AdminTableSeeder

并将播种机添加到DatabaseSeeder

public function run()
    {
        $this->call(AdminTableSeeder::class);
    }

但是当我运行播种器php artisan db:seed时,我得到一个类错过错误:

  

PHP致命错误:第15行的/laravelpath/database/seeds/AdminTableSeeder.php中找不到“管理员”类

     

[Symfony的\元器件\调试\异常\ FatalErrorException]
    未找到“管理员”类

似乎是Admin模型。

我尝试运行修正composer updatecomposer dump-autoload,但他们没有帮助。

任何人都知道发生了什么?为什么我会收到此错误以及如何解决?

额外信息:我在某个地方读到了我应该为我的应用命名所以我执行了php artisan app:name MyAppName并且它在任何地方添加了命名空间(至少在Http文件夹中)。我不确定它是否搞砸了我的课程。

@edit 1

这是AdminTableSeeder

use Illuminate\Database\Seeder;

class AdminTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('admins')->delete();
        Admin::create(array(
            'name'     => 'Victor Ferreira',
            'username' => 'victorferreira',
            'email'    => 'victor.ferreira@live.com',
            'password' => Hash::make('123456'),
        ));
    }
}

3 个答案:

答案 0 :(得分:1)

在您的AdminTableSeeder.php

use App\Models\Admin;

查看您的Admin模型,它位于App \ Models命名空间下,这意味着您的Admin模型位于app / Models /文件夹下。如果您的管理员不在app / Models文件夹下,则不起作用,然后从管理员模型中删除模型并创建名称空间App \ Admin

答案 1 :(得分:1)

您是否通过运行此命令进行了检查?

composer dump-autoload

您必须运行此命令才能自动加载所有新创建的文件。

答案 2 :(得分:0)

在运行或执行播种机文件

之前运行以下命令
composer dump-autoload -o