php - onetomany - ¿Cómo arreglar la clase no es una entidad válida o superclase mapeada?
symfony doctrine onetomany (3)
Así que estoy tratando de seguir el tutorial de symfony2 sobre doctrina para mi propio sitio web y modelar mi entidad de User
después de su Product
.
Además, antes de que alguien marque esto como duplicado, ya he probado las soluciones dadas en numerosas otras preguntas sin suerte:
- No es una entidad válida o superclase mapeada
- La clase Doctrine no es una entidad válida o superclase mapeada
- Symfony / Doctrine: Class no es una entidad válida o superclase mapeada
- symfony2 no es una entidad válida ni superclase mapeada
- Symfony / Doctrine: Class no es una entidad válida o superclase mapeada
- "Clase XXX no es una entidad válida o superclase mapeada" después de mover la clase en el sistema de archivos
Y la lista continúa
Tengo mi clase de entidad:
<?php
namespace MySite/MyBundle/Entity;
use Doctrine/ORM/Mapping as ORM;
/**
* @ORM/Entity
* @ORM/Table(name="user")
*/
class User
{
/**
* @ORM/Column(type="integer")
* @ORM/Id
* @ORM/GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM/Column(type="string", length=100)
*/
protected $name;
/**
* @ORM/Column(type="string", length=64)
*/
protected $password;
}
?>
Ahora, estoy ejecutando el comando:
$ php app/console doctrine:generate:entities MySite/MyBundle/Entity/User
para generar los métodos de acceso. Sin embargo, cuando hago esto, obtengo el error:
[Doctrine/ORM/Mapping/MappingException]
Class "MySite/MyBundle/Entity/User" is not a valid entity or mapped super class.
Ok, lo descubrí por mi cuenta. Mi problema es que mi config.yml estaba equivocado. Me faltaba la línea auto_mapping: true
en mi config.yml.
doctrine:
# (dbal stuff here)
orm:
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
Después de agregar eso, todo se autogenera bien con la php app/console doctrine:generate:entities MySite/MyBundle/Entity/User
line
Tuve un problema similar y descubrí al final que el problema en mi caso era que me perdí la clase que se extiende Bundle
namespace Acme/TagBundle;
use Symfony/Component/HttpKernel/Bundle/Bundle;
class AcmeTagBundle extends Bundle
{
}
y declarar esa clase en AppKernel.php bajo la matriz de paquetes.
Mi problema fue que nombré la entidad de la carpeta en lugar de la entidad. Cuando lo arreglé, funcionó como un amuleto.