best practices - Repository et EntityManager
	
	
		salut,
j'ai cru comprendre qu'il était fortement déconseillé d'accéder à l'EntityManager au sein d'une entité et qu'il était préférable de dériver la classe EntityRepository pour y placer les méthodes qui ne concernent pas directement le modèle.
Cela donnerait par exemple, pour récupérer toutes les déclinaisons d'un produit qui sont en promotion, le code suivant :
entité pour le produit :
	Code:
	
1 2 3 4 5 6 7 8 9
   |  
/**
 * @Entity(repositoryClass="Repositories\ProductRepository")
 * @Table(name="product")
 */
class Product{
    //...
    //la méthode pour récupérer les promos ne se trouve pas ici car elle ne concerne pas le modèle
} | 
 et le repository :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13
   |  
namespace Repositories;
use Doctrine\ORM\EntityRepository;
 
class ProductRepository extends EntityRepository{
 
    //méthode pour récupérer les promotions des déclinaisons d'un produit
    public function getSpecialOffers( $idproduct ){
        //...
    }
 
 
} | 
 et les promotions sont récupérées de la façon suivant :
	Code:
	
1 2
   |  
$offers = Registry::getEntityManager()->getRepository('ProductRepository')->getSpecialOffers( $idproduct ); | 
 Est-ce lselon vous la ( ou une ) bonne façon de procéder ou peut-on mieux faire?
Par ailleurs, serait-il vraiment maladroit d'accéder à l'EntityManager à l'intérieur de la l'entité afin de garantir la persistence de celle-ci de la façon suivante :
	Code:
	
1 2 3 4 5 6 7 8 9 10 11
   |  
class Product{
 
    public function save(){
 
        Registry::getEntityManager()->persist( $this );
        Registry::getEntityManager()->flush();
 
    }
 
} | 
 merci pour vos avis :)