我正在尝试使用Doctrine在Symfony2中执行ManyToOne关系。我的实体是:
namespace My\ApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="company")
*/
class Company
{
/**
* @var integer
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
public function __construct() {
$this->users = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
另一个:
namespace My\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity
*/
class User extends BaseUser
{
public function __construct()
{
parent::__construct();
}
/**
* @var
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
...
/**
* @ORM\ManyToOne(targetEntity="My\ApiBundle\Entity\Company")
* @ORM\JoinColumn(name="idLastCompany", referencedColumnName="id")
*/
protected $idLastCompany;
显然使用其他属性及其集合并获取方法,但我唯一的关系是公司与idLastCompany之间。例如,当我清除缓存时,我收到此错误:
MappingException:目标实体My \ ApiBundle \ Entity \ Copmany不能 可在'我的用户Bundle \ Entity \ User#idLastCompany'中找到。
任何想法? 感谢
答案 0 :(得分:1)
错误消息告诉您所需的一切:)
MappingException:在'My \ UserBundle \ Entity \ User#idLastCompany'中找不到目标实体My \ ApiBundle \ Entity \ Copmany 。
您在实体文件名,实体类名称或关系字段$ idLastCompany docblock中拼写了Co PM any而不是Company。
即使您在此处发布的代码是正确的,您的实际代码也包含拼写错误。
我会在整个项目中搜索“Copmany”并修复错字。然后它会工作。