framework-web:symfony:models:crud

Ceci est une ancienne révision du document !


Opérations CRUD

Récupération de l'entity manager doctrine dans un contrôleur :

        // you can fetch the EntityManager via $this->getDoctrine()
        // or you can add an argument to your action: index(EntityManagerInterface $em)
        $em = $this->getDoctrine()->getManager();

Comme indiqué, l'entity manager peut aussi être injecté.

    $productRepository = $this->getDoctrine()->getRepository(Product::class);

Pour une bonne séparation du code, il est conseillé de créer des classes Repository pour chacune des classes métier utilisées :

namespace App\Repository;

use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use App\Entity\User;
use Doctrine\Common\Persistence\ManagerRegistry;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class UserRepository extends ServiceEntityRepository {

	public function __construct(ManagerRegistry $registry) {
		parent::__construct($registry, User::class);
	}

	public function getByLastName($lastName){
		$users= $this->findBy(["lastname"=>$lastName]);
		$count=\sizeof($users);
		if($count==0){
			throw new NotFoundHttpException("Aucun utilisateur trouvé");
		}
		return $users;
	}

}

Il est ensuite possible d'injecter ce Repository pour l'utiliser dans un contrôleur :

class UsersController extends Controller{
	/**
	 * @var UserRepository
	 */
	private $repository;

	public function __construct(UserRepository $userRepo){
		$this->repository=$userRepo;
	}
}

  • framework-web/symfony/models/crud.1517825635.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)