3 Stimmen

Wie man den Fehler "Klasse xxx ist keine gültige Entität oder gemappte Superklasse" löst

Ich habe eine Klasse Setting wie folgt definiert:

$name;
    }

    public function __set($key, $value){
        $this->$key = $value;
    }

    public function getFullName() {
        return $this->name . ' suffix';
    }

    public static function getValue($settingName) {
        $result = '';
        try {
            $setting = em()->createQuery('SELECT s FROM Setting s WHERE s.name = :name')
                ->setParameter('name', $settingName)
                ->getSingleResult();

            $result = $setting->value;
        }
        catch (\Doctrine\ORM\NoResultException $exception) {

        }

        return $result;
    }
}

Leider führt dies zu einem Fehler: Fatal error: Uncaught exception 'Doctrine\ORM\Mapping\MappingException' with message 'Class "Setting" is not a valid entity or mapped super class.' in xxxxx/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/MappingException.php on line 216

Wie kann dies gelöst werden?

3voto

Gabriel Punkte 1840

Um dieses Problem zu lösen, musste ich Setup::createAnnotationMetadataConfiguration mit false im letzten Parameter aufrufen, um die Verwendung von SimpleAnnotationReader zu vermeiden, da Sie AnnotationReader benötigen, um das ORM\ Namensraumpräfix zu verwenden.

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

$dbParams = array(
    'driver' => 'pdo_mysql',
    'host' => '127.0.0.1',
    'user' => 'root',
    'password' => '', 
    'dbname' => 'db',
);

$path = __DIR__ . '/Entity';

$config = Setup::createAnnotationMetadataConfiguration(array($path), true, null, null, false);

$entityManager = EntityManager::create($dbParams, $config);

1voto

murze Punkte 3859

Lösung gefunden: Es scheint, dass das Problem bei der Verwendung von SimpleAnnotationReader liegt.

Wenn Sie den Annotationstreiber wie folgt konfigurieren (der zweite Parameter sollte false sein), funktioniert es.

$driver = $config->newDefaultAnnotationDriver(
    APPLICATION_PATH . '/models', false
);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X