尝试从命名空间AppBundle \ Repository加载类“ Roles”

Kub*_* J. 1 php doctrine symfony symfony-2.7

我在数据库中有角色:

AppBundle\Entity\Roles:
 type:     entity
 table:     Roles
 repositoryClass: AppBundle\Repository\Roles
Run Code Online (Sandbox Code Playgroud)

空类用于测试:

namespace AppBundle\Repository;
use Doctrine\ORM\EntityRepository;
use AppBundle\Entity\Roles;

class RolesRepository extends \Doctrine\ORM\EntityRepository
{
}
Run Code Online (Sandbox Code Playgroud)

我的控制器中的一个简单用例:

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AppBundle\Entity\Roles;
class ClientsController extends CommonController
{
    public function newAction(Request $request)
    {
        // [...]
        $role = $this->getDoctrine()
               ->getRepository('AppBundle:Roles')
               ->findOneBy(array('role'=>'ROLE_CLIENT'));
        // [ ...]
    }
}
Run Code Online (Sandbox Code Playgroud)

当我只在我的.orm.yml文件中放入“ repositoryClass:\ AppBundle \ Repository \ Roles”时,我得到了错误消息:

试图从命名空间“ \ AppBundle \ Repository”中加载类“ Roles”。您是否忘记了另一个名称空间的“使用”语句?

有人可以帮我吗?

Jak*_*zak 5

您的存储库类名称为AppBundle\Repository\RolesRepository,因此在您的实体配置中,而不是:

 repositoryClass: AppBundle\Repository\Roles
Run Code Online (Sandbox Code Playgroud)

应该是:

 repositoryClass: AppBundle\Repository\RolesRepository
Run Code Online (Sandbox Code Playgroud)