课程'用户'不存在?

时间:2015-04-06 00:45:31

标签: php laravel

尝试使用db:seed时从命令提示符处获取该错误。我确实运行了composer dump,并确保Seeder命名空间在我的种子文件中。

我不明白为什么它告诉我用户类(我确定指的是该模型)不存在,当我在 app中有以下内容时user.php的

<?php namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract {

    use Authenticatable, CanResetPassword;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name', 'email', 'password'];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];

}

这是我在数据库\种子

中的UserTableSeeder.php文件
<?php

use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder
{

    public function run()
    {
        DB::table('users')->delete();
        User::create(array(
            'username' => 'admin',
            'password' => Hash::make('secret')
        ));
    }

}

我知道这些字段与$ fillable变量不匹配,但我认为这不会导致该类甚至无法被识别。在播种之前,是否需要在此文件中添加create()函数?

这是我的数据库(时间戳)_create_users_table.php 以获得良好衡量标准:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('username');
            $table->string('password');
            $table->rememberToken()->nullable();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }

}

有什么想法吗?另外,通过使用我自己的用户表,我自己也不会使用内置的auth和诸如此类的东西?

3 个答案:

答案 0 :(得分:1)

在播种机中添加顶部

Use App\User;

答案 1 :(得分:0)

您在播种机中引用了User,但您从未导入过它。您可以通过在播种机顶部添加use App\User;来导入它,也可以将命名空间添加到参考中:

\App\User::create(array( ...

答案 2 :(得分:0)

将UserTableSeeder.php修改为此

<?php

use App\User;

use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder
{

    public function run()
    {
        DB::table('users')->delete();
        User::create(array(
            'username' => 'admin',
            'password' => Hash::make('secret')
        ));
    }

}

或者你可以做这样的事情

<?php

use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder {

    public function run()
    {

        DB::table('users')->delete();

        DB::table('users')->insert(
            array(
                 'username' => 'admin',
                'password' => Hash::make('secret')
            )
        );

    }

}