J'ai besoin de valeurs de 2 entités différentes. Je ne sais pas comment faire. J'ai essayé jusqu'à présent:
<?php
namespace Pond\GeolocBundle\Entity;
use Doctrine\ORM\EntityRepository;
/**
* PondLakeRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class PondLakeRepository extends EntityRepository
{
public function getSwimsAvailableById($id)
{
// get the nb of swims of a lake
$lake = $this->findOneById($id);
$swims = $lake->getSwims();
$repository = $this->getDoctrine()
->getManager()
->getRepository('PondGeolocBundle:User_Lake');
//get the nb of users in a lake
$qb = $this->_em->createQueryBuilder();
$qb->select('count(a.id)');
$qb->from('PondGeolocBundle:User_Lake', 'a');
$nbOfUsers = $qb->getQuery()->getSingleScalarResult();
// return the nb of swims available onthis lake
$avail = $swims - $nbOfUsers;
print_r ($avail);
}
}
Ne fonctionne pas S'il vous plaît aider. Merci
Vous pouvez accéder à la EntityManager
en appelant Doctrine\ORM\EntityRepository#getEntityManager()
:
$repository = $this
->getEntityManager()
->getRepository('PondGeolocBundle:User_Lake');
Si vous préférez injecter des dépendances, déclarez vos référentiels en tant que services afin de pouvoir en injecter un pour l’utiliser dans l’autre:
services.yml
services:
repository.user_lake:
class: Pond\GeolocBundle\Entity\UserLakeRepository
factory: [@doctrine, getRepository]
arguments:
- PondGeolocBundle:User_Lake
repository.pond_lake:
class: Pond\GeolocBundle\Entity\PondLakeRepository
factory: [@doctrine, getRepository]
arguments:
- PondGeolocBundle:PondLake
calls:
- [setUserLakeRepository, [@repository.user_lake]]
dans PondLakeRepository.php, vous devez avoir un séparateur (setUserLakeRepository) dans une propriété pour stocker le référentiel (c'est-à-dire $ userLakeRepository).