webentwicklung-frage-antwort-db.com.de

Laravel 5: DB Seed Klasse nicht gefunden

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?

15
JasonGenX

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?

0
JasonGenX

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"
],
46

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;
4
entoniperez

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;
0
iahmedbacha