このDatabaseSeeder.phpがあります。
<?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('MemberInvitationSeeder');
}
}
DatabaseSeeder.phpファイルの兄弟であるこのファイルMemberInvitationSeeder.phpがあります
<?php
use Illuminate\Database\Seeder;
use App\MemberInvitation;
class MemberInvitationSeeder extends Seeder {
public function run()
{
MemberInvitation::truncate();
MemberInvitation::create( [
'id' => 'BlahBlah' ,//com_create_guid(),
'partner_id' => 1,
'fisrt_name' => 'Thats',
'last_name' => 'Me',
'email' => '[email protected]',
'mobile_phone' => '444-342-4234',
'created_at' => new DateTime
] );
}
}
今、私は電話する
php artisan db:seed
そして私は得る:
[ReflectionException]
Class MemberInvitationSeeder does not exist
「composer dump-autoload」など、見つけられるすべてを試しました。無駄に。私は何を間違えていますか?
私は今その理由を知っていると信じています。
新しいクラスMemberInvitationSeederは、composer.jsonファイルの自動ロードクラスにはありませんでした。
そのクラスを手動で追加したため、そこにはありませんでした。
さて、今後、そのようなクラスを再度追加する場合、クラスがオートローダーに自動的にアクセスするために何を使用する必要がありますか?
ステップ1-シードを生成します:
php artisan make:seed MemberInvitationSeeder
ステップ2-DatabaseSeeder.phpに次の行を追加します。
$this->call(MemberInvitationSeeder::class);
ステップ:
composer dump-autoload
ステップ4:
php artisan db:seed
これは動作するはずです
これが手がかりでない場合は、ファイルcomposer.jsonをチェックし、「autoload」セクションにこのコードがあることを確認してください。
"classmap": [
"database"
],
命令use
を使用して、クラスをシーダーファイルに追加することでこれを解決しました。
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\YourClassName;
上記の解決策が機能しない場合は、これを試してください。名前空間を変更した可能性があります(デフォルトでは「App」です)。あなたがする必要があるのは、composer.json
ファイルして、これを確認します。
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
名前空間がこの例のようにAppである場合、このソリューションはあなたに向いていません。
そうでない場合は、見つけた名前空間を取得して、その行をシーダークラスに挿入します。
use NameSpaceFound\User;