Как получить псевдоним таблицы doctrine2?

Я хочу создать метод в своем классе репозитория Doctrine2, который берет QueryBuilder и добавляет несколько дополнительных предложений, одно из которых является внутренним соединением.

Как узнать псевдоним таблицы, которая использовалась для создания экземпляра построителя запросов? Это что-то обнаруживаемое или это должно быть соглашением в кодовой базе (и, следовательно, потенциальным источником ошибок)?

Мой клиентский код:

public function getPasswordAction($id)
{
    $user = $this->get('security.context')->getToken()->getUser();

    $repository = $this->getDoctrine()
        ->getRepository('TenKPwLockerBundle:Password');

    $query = $repository->createQueryBuilder('p')
        ->where('id = :id')
        ->setParameter('id', $id);

    $query = $repository->userCanReadRestriction($query, $user);
    ...

и мой класс репозитория содержит:

public function userCanReadRestriction(\Doctrine\ORM\QueryBuilder $builder, \TenK\UserBundle\Entity\User $user)
{
                             // where can I get 'p' from?
    return $builder->innerJoin('p.shares', 's')
        ->where('createdBy = :creator')
        ->orWhere('s.toUser = :toId')
        ->setParameters(array('creator' => $user, 'toUser' => $user));
}

На самом деле, в приведенном выше коде, как я могу убедиться, что QueryBuilder вообще работает с сущностью пароля?

5
задан user1432227 6 June 2012 в 09:19
поделиться