したがって、データベースを移行した後、基本的なphp artisan db:seed
を試していますが、cmd -[Symfony\Component\Debug\Exception\FatalErrorException] Class 'User' not found
でタイトルエラーが返され続けます
私が試したこと
db:seed
関数を実行する前に自動ロード--seed
構文を使用して再実行します以下は移行です
<?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]']);
}
}
これが私の完全な構文です。さらにファイルが必要な場合は、それらをリクエストしてください。質問を更新します。
ルート名前空間のDatabaseSeeder
では、クラスUser
を呼び出します。そのため、クラスUser
をロードしようとします。ただし、クラスUser
の定義は名前空間App
にあります。そのため、DatabaseSeeder
でApp\User
を使用するか、ファイルの先頭に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]']);
}
}
追伸これは、そのようなクラスがない場合にクラスApp\Userをオートロードできることを前提としています。Illuminateクラスをインポートするだけです。
use Illuminate\Foundation\Auth\User;
ちなみに、職人の出力をデバッグするために私が非常に役立つと思うものがあります。完全なスタックトレースを含む出力メッセージに極端な冗長性を追加するフラグ-vvv
を使用する必要があります。
php artisan migrate -vvv