wake-up-neo.com

ReflectionException: Klasse ClassName ist nicht vorhanden - Laravel

Sobald ich php artisan db:seed Befehl eingebe. 

Ich bekomme Error wie:

[ReflectionException]
Die Klasse UserTableSeeder ist nicht vorhanden 

[email protected]:/opt/lampp/htdocs/dd/laravel# php artisan db:seed

Hier ist meine UserTableSeeder.php & DatabaseSeeder.php Seite

UserTableSeeder.php

<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class UserTableSeeder extends Seeder
{    
    public function run()
    {
        DB::table('users')->delete();
        User::create(array(
        'name'     => 'Chris Sevilleja',
        'username' => 'sevilayha',
        'email'    => '[email protected]',
        'password' => Hash::make('awesome'),
        ));
    }    
}

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();

        Eloquent::unguard();
        $this->call('UserTableSeeder');

        //$this->call(UserTableSeeder::class);

        //Model::reguard();
    }
}

Ich beziehe mich auf diese Verknüpfung für die Gestaltung und Entwicklung der Anmeldeseite ... Bitte helfen Sie mir, dieses Problem zu lösen. Vielen Dank.

28
Nana Partykar

Führen Sie einen composer update und dann composer dump-autoload aus.

Wenn das Problem mit dem oben genannten Problem nicht gelöst wird, ändern Sie die Dateiclassmapin Ihrer Datei composer.json so, dass sie den projektrelevanten Pfad zu Ihren PHP-Dateien enthält:

"autoload-dev": {
    "classmap": [
        "tests/TestCase.php",
        "database/seeds/UserTableSeeder.php" //include the file with its path here
    ]
}, /** ... */

und bald darauf einen composer dump-autoload, und es sollte jetzt wie ein breeze funktionieren!

Bearbeiten von @JMSamudio

Wenn composer dump-autoload nicht gefunden wird, aktivieren Sie einfach diese Option composer config -g -- disable-tls true.

90

Nach meiner Erfahrung wird dies meistens auftauchen, wenn die Klasse, die Sie anrufen möchten, einige Fehler aufweist und nicht kompiliert werden kann. Bitte überprüfen Sie, ob die Klasse, die nicht reflektiert wird, eigenständig ausgeführt werden kann.

10
Kamaro Lambert

Ein composer dump-autoload sollte es beheben.

8
fsavina

Ich hatte dieses Problem und konnte es mit php artisan config:cache lösen. Das Problem war, dass ich diesen Befehl bereits zuvor ausgeführt hatte und später einige neue Seeder-Klassen enthielt. Die zwischengespeicherten Konfigurationen erkannten die neuen Klassen nicht. Diesen Befehl erneut auszuführen, hat funktioniert.

Wenn Sie feststellen, dass Sie häufig Änderungen vornehmen, um neue Seeder-Klassen aufzunehmen, sollten Sie php artisan config:clear ausführen. Auf diese Weise können Sie so viele Änderungen vornehmen, wie Sie möchten. Nach dem Testen können Sie config:cache erneut ausführen, um die Dinge wieder optimal auszuführen.

4

Ich habe das gleiche Problem mit einer class. Ich versuche composer dump-autoload und php artisan config:clear, löse aber mein Problem nicht.

Dann habe ich beschlossen, meinen Code zu lesen, um irgendetwas zu finden. Ich finde das Problem. Das Problem in meinem Fall ist nur ein Komma, das in meiner Klasse fehlt. Siehe meinen Modellcode:

{
    protected
    $fillable = ['agente_id', 'matter_id', 'amendment_id', 'tipo_id'];

    public
    $rules = [
        'agente_id' => 'required', // <= See the comma
        'tipo_id' => 'required'
    ];

    public
    $niceNames = [
        'agente_id' => 'Membro', // <= This comma is missing on my code
        'tipo_id' => 'Membro'
    ];
}
3
Luciano Braga

Aus irgendeinem Grund musste ich composer dumpautoload -o ausführen. Beachten Sie das Flag -o, das mit der Optimierung gemeint ist. Ich habe keine Ahnung, warum es nur damit funktioniert, aber probieren Sie es aus. Vielleicht hilft es jemandem.

2
composer dump-autoload
php artisan config:clear
php artisan cache:clear

Das wird sicher funktionieren. Wenn nicht, müssen Sie tun

composer update

und dann die vorgenannten Befehle.

1
user3309447

Ich schreibe nicht als Antwort auf diese Frage. Aber ich möchte anderen helfen, wenn sie auf denselben Fehler stoßen, aber die hier genannten Antworten funktionieren nicht. Ich habe auch alle hier genannten Lösungen ausprobiert. Aber mein Problem war mit dem Namespace, den ich verwendet habe. Der Weg war falsch.

Der verwendete Namespace ist:

namespace App\Http\Controllers;

Der Controller befindet sich jedoch in einem Ordner mit dem Namen 'FrontEnd'.

die Lösung ist also, den namespace zu ändern:

namespace App\Http\Controllers\Frontend;
1
Abhi

versuchen Sie den folgenden Befehl zu verwenden

php artisan db:seed --class=DatabaseSeeder
1
easycodingclub

Sie müssen es einem Namensraum zuweisen, damit es gefunden werden kann.

namespace App\Http\Controllers;
1
G-Man

Überprüfen Sie Ihre Groß- und Kleinschreibung!

Auf Ihrem Host-System (Windows oder Mac) wird standardmäßig die Groß- und Kleinschreibung nicht berücksichtigt, und Homestead übernimmt dieses Verhalten. Ihr Produktionsserver unterscheidet dagegen zwischen Groß- und Kleinschreibung.

Wann immer Sie eine ClassNotFound Ausnahme erhalten, überprüfen Sie Folgendes:

  1. Rechtschreibung
  2. Namespaces
  3. Kapitalisierung
1
Fazil Raza

Ich habe den Unterricht neu erstellt, und es hat funktioniert. Kopieren Sie den gesamten Dateiinhalt, löschen Sie die Datei und führen Sie php artisan make:seeder ModelTableSeeder aus. Weil composer dump-autoload für mich nicht funktioniert hat. 

0
М.Б.

komponist Update 

Über dem Kommando arbeiten Sie für mich.

Immer wenn Sie eine neue Migration in Laravel durchführen, müssen Sie die "Klassenzuordnung" in der Datei composer.json aktualisieren.

0
KNK

Wenn Sie nach der Seeder-Klassendatei suchen, können Sie composer dump-autoload ausführen. Wenn Sie es erneut ausführen und nach dem Modell suchen, können Sie es in der Seeder-Datei selbst referenzieren. Wie so

use App\{Model};
0
Kent Aguilar
composer dump-autoload 

das wird es beheben

0
Richard kortby

Nicht streng auf die Frage bezogen, erhielt aber den Fehler ReflectionException: Class config does not exist

Ich hatte eine neue .env-Variable mit Leerzeichen hinzugefügt. Das Ausführen von php artisan config:clear sagte mir, dass jede .env-Variable mit Leerzeichen von "s umgeben sein sollte.

Habe dies und meine Anwendung erklärt, dass sie wieder funktioniert, keine Notwendigkeit zur Konfiguration der Konfigurationsdatei auf Laravel Homestead (5.4)

0
Scott Brown

Normalerweise erscheint im Larventest die Fehlermeldung ReflectionException: Class app does not exist, Wenn Sie vergessen, die Verbindung zu schließen.

wenn Sie in Ihrem Test die Funktion setUp oder tearDown verwenden, vergessen Sie nicht, die Verbindung zu schließen, indem Sie parent::setUp und parent::tearDown aufrufen.

    public function setUp()
    {
        parent::setUp();
    }

    public function tearDown()
    {
        parent::tearDown();
    }
0
Suresh Dhakal

Sie können versuchen, app in use in Großbuchstaben zu schreiben, also App. Arbeitete für mich.

0
Epsilon47

Wenn Sie psr- verwenden, prüfen Sie, ob der Klassenname keinen Unterstrich enthält.