2015-06-11 6 views
12

(Прежде чем я что-нибудь скажу, я скажу, что оглянулся на стек и Google, и не нашел никаких решений этой проблемы, я также попробовал печально известную composer dump-autoload Функция, я всегда использую ее перед посещением базы данных после внесения любых изменений, пожалуйста, НЕ говорите мне, чтобы сделать эту функцию! Наконец, пожалуйста, внимательно прочитайте, прежде чем отправлять ответ, потому что я не буду отвечать на вещи, которые, как я сказал, сделали, спасибо. .)Класс «Пользователь» не найден - Laravel 5.1 [php artisan db: seed]

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

Что я Пытался

  • PHP дамп-автозагрузка после обновления класса
  • PHP дамп-автозагрузки перед запуском 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's 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]']); 

    } 
} 

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

ответ

15

В вашем 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 \ пользователь может быть автоматически загружаются, если у вас нет такого класса просто импортировать ILLUMINATE один

use Illuminate\Foundation\Auth\User; 

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

php artisan migrate -vvv 
+1

Да, это исправлено, спасибо, сэр Luceos! –

+0

Добро пожаловать, сэр @KenziieeFlavius ​​ – Luceos

+4

, если 'use App \ User;' не работает, тогда поставьте его так: используйте Illuminate \ Foundation \ Auth \ User; '. –

Смежные вопросы