Подтвердить что ты не робот

Класс "Пользователь" не найден - Laravel 5.1 [php artisan db: seed]

(Прежде чем я что-нибудь скажу, я скажу, что посмотрел на стек и Google, и не нашел никаких решений этой проблемы, я также попробовал печально известную функцию composer dump-autoload, я всегда использую ее перед семенем БД после создания каких-либо изменения, пожалуйста, НЕ ДЕЛАЙТЕ мне делать эту функцию! Наконец, пожалуйста, внимательно прочитайте, прежде чем отправлять ответ, потому что я не буду отвечать на вещи, которые я сказал ive, спасибо..)

Эй, я совершенно новый, чтобы laravel и я пытаюсь научиться делать несколько основных вещей, поэтому, пожалуйста, со мной. Поэтому я пытаюсь выполнить базовый php artisan db:seed после миграции моей базы данных, но он продолжает возвращать ошибку заголовка в cmd - [Symfony\Component\Debug\Exception\FatalErrorException] Class 'User' not found

Вещи, которые я пробовал

  • php dump-autoload после обновления класса
  • php dump-autoload перед запуском функции db:seed
  • откат миграции, а затем повторный запуск
  • откат миграции, а затем повторное выполнение его с помощью синтаксиса --seed
  • Измените пространство имен файла 'Users'

Ниже перечислены миграции

<?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('name');
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->rememberToken();
            $table->timestamps();
        });
    }

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

Я считаю, что все здесь правильно, и теперь вот класс пользователя.

<?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 JSON form.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];

}

И теперь, наконец, все важные сеялки базы данных

<?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');
        $this->call('UserTableSeeder');

        Model::reguard();
    }
}

class UserTableSeeder extends Seeder
{
    public function run()
    {

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

        User::create(['email' => '[email protected]']);

    }
}

Итак, чтобы мой полный синтаксис, если требуется больше файлов, пожалуйста, запросите их, и я обновлю свой вопрос.

4b9b3361

Ответ 1

В DatabaseSeeder в корневом пространстве имен вы вызываете класс User. Для этого пытается загрузить класс User. Однако определение вашего класса User в пространстве имен App. Вы должны использовать App\User в DatabaseSeeder или добавить вверху файла use App\User;

DatabaseSeeder

<?php

use App\User;
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');
        $this->call('UserTableSeeder');

        Model::reguard();
    }
}

class UserTableSeeder extends Seeder
{
    public function run()
    {

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

        User::create(['email' => '[email protected]']);

    }
}

Ps. это предполагает, что ваш класс App\User может быть автоматически загружен, если у вас нет такого класса, просто импортируйте Illuminate one

use Illuminate\Foundation\Auth\User;

На стороне заметьте что-то, что я нахожу очень полезным, чтобы отлаживать выход мастеров. Вы должны использовать флаг -vvv, который добавляет экстренную многословность к выходным сообщениям, включая полную трассировку стека.

php artisan migrate -vvv