Ich habe dieses 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');
}
}
Ich habe diese Datei MemberInvitationSeeder.php, Geschwister zur DatabaseSeeder.php-Datei
<?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
] );
}
}
Jetzt rufe ich an
php artisan db:seed
und ich bekomme:
[ReflectionException]
Class MemberInvitationSeeder does not exist
Ich habe alles versucht, was ich finden konnte, einschließlich "Composer Dump-Autoload". umsonst. Was mache ich falsch?
Ich glaube, ich weiß jetzt den Grund.
Die neue Klasse MemberInvitationSeeder befand sich nicht in den automatisch geladenen Klassen in der Datei composer.json.
Es war nicht da, weil ich diese Klasse manuell hinzugefügt habe.
Nun, wenn ich wieder solche Klassen hinzufüge, was soll ich verwenden, damit meine Klasse automatisch zum Autoloader wird?
Schritt eins - Samen erzeugen:
php artisan make:seed MemberInvitationSeeder
Schritt zwei - In DatabaseSeeder.php Zeile hinzufügen:
$this->call(MemberInvitationSeeder::class);
Schritt drei :
composer dump-autoload
Schritt vier :
php artisan db:seed
Das sollte funktionieren
Wenn dies nicht der Anhaltspunkt ist, überprüfen Sie die Datei composer.json und stellen Sie sicher, dass Sie diesen Code im Abschnitt "Autoload" haben:
"classmap": [
"database"
],
Ich habe das Problem gelöst, indem ich die Klasse mit der Anweisung use
zur Seeder-Datei hinzugefügt habe:
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use App\YourClassName;
Wenn die oben genannten Lösungen nicht funktionieren, versuchen Sie diese. Sie haben möglicherweise den Namespace geändert (standardmäßig ist es "App"). Sie müssen zum composer.json
gehen. Datei und überprüfen Sie dies:
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
}
},
Wenn der Namespace App wie in diesem Beispiel lautet, ist diese Lösung nicht für Sie.
Andernfalls nehmen Sie den gefundenen Namespace und fügen Sie diese Zeile in Ihre Seeder-Klasse ein:
use NameSpaceFound\User;