Saludos.
Al ejecutar comando para crear una entidad o al actualizar la base de datos me arroja este mensaje. Solo sucede con los comandos relacionados con Doctrine.
[ErrorException] Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\dev\ven dor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\Driver\Annotati onDriver.php line 153
El problema surge de este código:
//AnnotationDriver.php line 153 /** * Whether the class with the specified name is transient. Only non-transient * classes, that is entities and mapped superclasses, should have their metadata loaded. * * A class is non-transient if it is annotated with an annotation * from the {@see AnnotationDriver::entityAnnotationClasses}. * * @param string $className * @return boolean */ public function isTransient($className) { $classAnnotations = $this->reader->getClassAnnotations(new \ReflectionClass($className)); foreach ($classAnnotations as $annot) { // AQUI if (isset($this->entityAnnotationClasses[get_class($annot)])) { return false; } } return true; }
Revisando los valores que devuelve $classAnnotations
, cada vez que es llamada la función isTransient
, la variable recibe un array hasta que el valor es 1 y después de eso arroja el error. Tambien arrojo que cuando especificaba --em=default
me arroja el error, pero no cuando especifico --em=otraBD
.
Me podrían ayudar.
Respuestas
La causa más probable es que no hayas configurado bien las anotaciones en alguna de tus entidades de Doctrine. También revisa que el contenido del archivo app/autoload.php
sea correcto en lo reference al AnnotationsRegistry
de Doctrine (aquí puedes ver sus contenidos correctos para Symfony 2.1).
@javiereguiluz