Запутался в репозиториях в Учении 2 - PullRequest
1 голос
/ 27 июня 2011

Я пытаюсь реализовать репозитории в своем приложении, чтобы отделить DQL от остальной логики Entity, но я получаю исключение класса 'UserRepository' not found in /home/fiodorovich/public_html/tests/library/Doctrine/ORM/EntityManager.php on line 567.

Это то, что есть в моем классе User:

/**
 * Description of User
 * @Table(name="users")
 * @Entity(repositoryClass="UserRepository")
 * @author fiodorovich
 */

И это репозиторий, который я создал:

namespace Federico\Entity\Repository;
use Doctrine\ORM\EntityRepository;

class UserRepository extends EntityRepository
{
    public function getAllUsers () {
        $users = $this->em->createQuery('SELECT u FROM Federico\Entity\User u JOIN u.countries')->getResult();
        return $users;
    }

    public function getUser ($id) {
        $query = $this->em->createQuery('SELECT u, c FROM Federico\Entity\User u JOIN u.countries c WHERE c.user = ?1');
        $query->setParameter(1, $id);
        $userModel = $query->getSingleResult();
        return $userModel;
    }
}

И, наконец, это строка, которую я использую для вызова из контроллера:

 $this->em->getRepository('Federico\Entity\User')->getAllUsers();

Любая помощь будет крутой, так как я действительно хочу использовать репозитории

Ответы [ 2 ]

3 голосов
/ 27 июня 2011

IIRC, если и класс хранилища, и класс сущностей не находятся в одном и том же пространстве имен, вам необходимо использовать полное имя пространства имен, то есть: @Entity(repositoryClass="Federico\Entity\Repository\UserRepository")

1 голос
/ 27 июня 2011

Я думаю, вы должны использовать @Entity(repositoryClass="Repository\UserRepository") - относительно сущности, потому что я предполагаю, что ваши классы хранилища находятся в Federico\Entity\Repository

...