2012-08-13 7 views
6

Estoy creando un Repositorio para usarlo con una Entidad en un proyecto Symfony2, pero no sé dónde almacenar la clase. He estado investigando en Internet, pero no tengo información sobre el espacio de nombres predeterminado o la carpeta predeterminada para almacenar los repositorios.Symfony2 repositorio carpeta estándar o espacio de nombres

que podía "pensar" en dos enfoques:

  1. uso de carpetas Entidad: (EntityRepository entidad y en la misma carpeta)

    /proyecto/paquete/de la entidad;

  2. uso carpeta de repositorio: (entidad en la carpeta entidad y repositorio en Repositorio uno)

    /proyecto/paquete/entidad; /project/entity/repository;

¿Hay algún estándar al respecto?

Respuesta

3

Se pueden almacenar en cualquier lugar que desee, pero el funcionario Symfony book utiliza

Acme/DemoBundle/repositorio/

Así que creo esa sería la forma más estándar

+0

¡Usted está en todos! Gracias :) – unairoldan

+1

Esto sigue siendo cierto. No veo esto en las versiones de libros actuales o anteriores. – d0001

+3

Esta ya no es la forma oficial de Symfony. Como se puede ver aquí: http://symfony.com/doc/current/book/doctrine.html#custom-repository-classes harías uso de la carpeta "Acme/DemoBundle/Entity" en lugar de "Acme/DemoBundle"/Repository/" –

0

Ahora estoy leyendo un tutorial sobre Cómo crear un blog con Symfony2 y allí tienen un directorio de Repository donde almacenan todas las clases de repositorio como esta: src/Blogger/BlogBundle/Repository/BlogRepository.php I Don ' Sé si esta es la mejor solución, pero espero que ayude. Si usted quiere tener un vistazo al tutorial - es aquí - http://tutorial.symblog.co.uk/docs/extending-the-model-blog-comments.html

1

Si de alguna manera Symfony no encuentra su repositorio, puede usar la anotación en la clase de entidad para definir el espacio de nombre del repositorio específico \ class (en el ejemplo: "Acme \ DemoBundle \ Entity \ Repository \ MyEntityRepository") de esta manera:

use Doctrine\ORM\Mapping as ORM; 

/** 
*@ORM\Entity(repositoryClass="Acme\DemoBundle\Entity\Repository\MyEntityRepository") 
*/ 
class MyEntity { ... } 

Tal vez se puede definir a través de YML, XML o PHP, pero yo uso anotaciones en las entidades.

0

Sin querer a través de una llave en el mono, el generador entidad Doctrina crea las clases de repositorio en la carpeta Entidad:

php app/console doctrine:generate:entity

Entidad:

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Test 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="AppBundle\Entity\TestRepository") 
*/ 
class Test 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 


    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 
} 

Repositorio:

namespace AppBundle\Entity; 

use Doctrine\ORM\EntityRepository; 

/** 
* TestRepository 
* 
* This class was generated by the Doctrine ORM. Add your own custom 
* repository methods below. 
*/ 
class TestRepository extends EntityRepository 
{ 
} 
+1

¿sabes que has agregado lo mismo dos veces, en entidad y repositorio? – userfuser

Cuestiones relacionadas