Мне нужны значения из двух разных объектов. Я не знаю, как это сделать. Я пробовал это до сих пор:
<?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); } }
Не работает Пожалуйста, помогите. благодаря
Вы можете получить доступ к EntityManager
, вызвав Doctrine\ORM\EntityRepository#getEntityManager()
:
$repository = $this ->getEntityManager() ->getRepository('PondGeolocBundle:User_Lake');
Если вам больше нравится вводить зависимости, объявляйте свои репозитории в качестве сервисов, чтобы вы могли вводить их для использования внутри другого:
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]]
в PondLakeRepository.php у вас должен быть setter (setUserLakeRepository) для свойства для хранения репозитория (то есть $ userLakeRepository).