我正在尝试在我的应用中实现存储库,以便将DQL与实体逻辑的其余部分分开但我得到了一个类'UserRepository' not found in /home/fiodorovich/public_html/tests/library/Doctrine/ORM/EntityManager.php on line 567
例外。
这是我的用户类:
/**
* 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();
任何帮助都会很酷,因为我真的想使用存储库
答案 0 :(得分:3)
IIRC除非存储库和实体类都在同一个命名空间内,否则必须使用完全限定的命名空间名称,即:@Entity(repositoryClass="Federico\Entity\Repository\UserRepository")
答案 1 :(得分:1)
我认为你应该使用@Entity(repositoryClass="Repository\UserRepository")
- 相对于实体
因为我假设您的存储库类位于Federico\Entity\Repository