Модель пользователя Laravel 5 не найдена

Я переместил модель User из каталога приложений по умолчанию в приложение / Модели.

Я обновил пространство имен в User to namespace App\Models; но я получаю эту ошибку:

 FatalErrorException in EloquentUserProvider.php line 122: Class '\App\User' not found 

У меня есть правильная запись в моем json-файле:

 "autoload": { "classmap": [ "database", "app/Modules", "app/Models" ], "psr-4": { "App\\": "app/", "Modules\\": "app/Modules/" } }, 

Что я пропустил?

Вам необходимо обновить файл config / auth.php . Измените 'model' => 'App\User' на 'model' => 'App\Models\User' .

Не забывайте очищать кеш после всех предыдущих изменений

 php artisan config:clear 

Не забудьте изменить пространство имен User.php .

Например, если ваша модель пользователя находится в /App/User.php тогда первая строка должна /App/User.php образом:

 <?php namespace App; 

Однако, если вы создали каталог /Models и ваша модель пользователя теперь находится в /App/Models/User.php , первая строка User.php должна ссылаться на это новое пространство имен:

 <?php namespace App\Models; 

Надеюсь, это поможет.

* Примечание. Моя тактика, вероятно, технически «неверна», поскольку она загрязняет глобальное пространство имен. Тем не менее, мне не удалось заставить другие ответы работать и опубликовать это только в крайнем случае. *

Я сделал это несколько иначе, чем другие ответы. Я также использую Laravel 5.

1) Я создал каталог app / Models и переместил User.php в этот каталог.

2) Я изменил /app/Models/User.php, удалив пространство имен вверху. Это может загрязнять глобальное пространство имен, но это единственный способ заставить его работать.

 <?php // !!!! NOTICE no namespace here !!!!! 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 = ['first_name', 'last_name', 'email', 'password']; /** * The attributes excluded from the model's JSON form. * * @var array */ protected $hidden = ['password', 'remember_token']; } 

3) Я добавил «app / Models» в раздел автозагрузки в composer.json:

 "autoload": { "classmap": [ "database", "app/Models" // <==== I added this ], "psr-4": { "App\\": "app/" } }, 

4) Я изменил auth.php следующим образом:

 /* |-------------------------------------------------------------------------- | Authentication Model |-------------------------------------------------------------------------- | | When using the "Eloquent" authentication driver, we need to know which | Eloquent model should be used to retrieve your users. Of course, it | is often just the "User" model but you may use whatever you like. | */ 'model' => '\User', 

Для справки, вот моя миграция таблицы пользователей:

 <?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('first_name'); $table->string('last_name'); $table->string('email')->unique(); $table->string('password', 60); $table->rememberToken(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('users'); } } 

И вот мой файл UsersTableSeeder.php:

 <?PHP use Illuminate\Database\Seeder; use Illuminate\Database\Eloquent\Model; class UsersTableSeeder extends Seeder { public function run() { DB::table('users')->delete(); $users = [ [ 'id' => 1, 'first_name' => 'Bret', 'last_name' => 'Lastname', 'email' => 'email@domain.com', 'password' => Hash::make('my raw dev password')] ]; foreach($users as $user){ \User::create($user); } } } ?> 

После того, как все эти обновления были выполнены, в командной строке я запустил:

 composer dump-autoload php artisan migrate --seed 

Надеюсь это поможет!

Не забудьте изменить

 use App\User; 

в

 use App\Models\User; 

в AuthController.php

Если у вас есть ваши модели в определенной папке, вам нужно запустить

 composer dump-autoload 

обновить 🙂