【问题标题】:Confused about repositories in Doctrine 2对 Doctrine 2 中的存储库感到困惑
【发布时间】:2011-06-27 18:20:46
【问题描述】:

我正在尝试在我的应用程序中实现存储库以将 DQL 与其他实体逻辑分开,但我得到了 '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();

任何帮助都会很酷,因为我真的很想使用存储库

【问题讨论】:

    标签: php doctrine repository repository-pattern


    【解决方案1】:

    IIRC 除非存储库和实体类都在同一个命名空间中,否则您必须使用完全限定的命名空间名称,即:@Entity(repositoryClass="Federico\Entity\Repository\UserRepository")

    【讨论】:

      【解决方案2】:

      我认为你应该使用@Entity(repositoryClass="Repository\UserRepository") - 相对于实体 因为我假设您的存储库类在Federico\Entity\Repository

      【讨论】:

      • 您如何将实体管理器传递给您的存储库?我总是像这样实例化它$this->em = Zend_Registry::get('em'); 但这次它不起作用,如果我 var_dump 它我可以看到它是空的
      猜你喜欢
      • 2011-01-28
      • 2011-08-23
      • 1970-01-01
      • 2012-07-18
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多