我对Symfony2有一个奇怪的问题。我正在处理一个40-50个实体的项目,其中一个实体的代码不起作用:
$user = $em->getRepository('CompanyUserBundle:User')
->findOneBy([
'username' => $person->getUsername()
]);我得到了错误Unknown Entity namespace alias 'CompanyUserBundle'.。奇怪的是,如果我将代码更改为:
$user = $em->getRepository('Company\UserBundle\Entity\User')
->findOneBy([
'username' => $person->getUsername()
]);它工作得很完美..。那么,这里怎么了?我在代码周围使用getRepository('Alias:Entity')结构,没有任何其他问题.
我不知道这是否重要,但是User是来自FOSUserBundle BaseUser类的子实体。
编辑
这是我的User类(位于src/Company/UserBundle/Entity):
namespace Company\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* User
*
* @ORM\Table(name="fos_user")
* @ORM\Entity
*/
class User extends BaseUser
{
/**
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}这里是我AppKernel.php的一部分
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
/* ... other, non interesting, bundles... */
new Company\UserBundle\UserBundle(),
new FOS\UserBundle\FOSUserBundle(),
new FR3D\LdapBundle\FR3DLdapBundle(),
new JMS\AopBundle\JMSAopBundle(),
new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
new JMS\DiExtraBundle\JMSDiExtraBundle($this),
);
}
}更多信息:正如@herr在评论中所说,使用
$user = $em->getRepository('UserBundle:User')
->findOneBy([
'username' => $person->getUsername()
]);效果很好..。但我不明白为什么。为什么在这个包中名称空间别名是UserBundle而不是CompanyUserBundle?我知道这一定是个愚蠢的错误,但我看不见.
发布于 2016-01-25 09:55:02
您可以使用UserBundle.php而不是CompanyUserBundle.php签入UserBundle的Bundle类文件。
就试着用
$em->getRepository('UserBundle:User')相反,
$em->getRepository('CompanyUserBundle:User')在本例中,我认为它的名称空间/ BundleClassName可能只是UserBundle而不是CompanyUserBundle。
谢谢。
https://stackoverflow.com/questions/34918052
复制相似问题