我正在使用ZF2与原则我收到这个错误.
The target-entity Entity\User cannot be found in ‘Subject\Entity\Subject#user’.
这是我的代码片段.
<?PHP namespace Subject\Entity; use Doctrine\ORM\Mapping as ORM; use Zend\InputFilter\InputFilter; use Zend\InputFilter\Factory as InputFactory; use Zend\InputFilter\InputFilterAwareInterface; use Zend\InputFilter\InputFilterInterface; /** * @ORM\Entity * @ORM\Table(name="subject") * @property string $subjectname * @property int $user_id * @property int $id */ class Subject implements InputFilterAwareInterface { protected $inputFilter; /** * @ORM\Id * @ORM\Column(type="integer"); * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\Column(type="string") */ protected $subjectname; /** * @ORM\ManyToOne(targetEntity="Entity\User",inversedBy="subjects") * @var User|null */ private $user; /** @return User|null */ public function getUser() { return $this->user; } /** @param User $user */ public function setUser(User $user) { if($user === null || $user instanceof User) { $this->user = $user; } else { throw new InvalidArgumentException('$user must be instance of Entity\User or null!'); } }}
然后是我的“用户”实体
namespace Subject\Entity; use Doctrine\ORM\Mapping as ORM; use Zend\InputFilter\InputFilter; use Zend\InputFilter\Factory as InputFactory; use Zend\InputFilter\InputFilterAwareInterface; use Zend\InputFilter\InputFilterInterface; /* * @ORM\Entity * @ORM\Table(name="users") * @property string $username * @property string $password * @property int $id */ class User implements InputFilterAwareInterface { protected $_username; protected $_password; /** * @ORM\OneToMany(targetEntity="Entity\Subject",mappedBy="user") * @var Collection */ private $subjects; /** @ORM\Id() @ORM\Column(type="integer") @ORM\GeneratedValue(strategy="AUTO") @var int */ protected $_id; public function __get($property) { return $this->$property; } public function __set($property,$value) { $this->$property = $value; } //Getters and setters /** @return Collection */ public function getSubjects() { return $this->comments; } /** @param Comment $comment */ public function addSubject(Subject $comment) { $this->comments->add($comment); $comment->setUser($this); }
}
您的实体声明不正确:
* @ORM\ManyToOne(targetEntity="Entity\User",inversedBy="subjects")
这应该是这样的:
* @ORM\ManyToOne(targetEntity="Subject\Entity\User",inversedBy="subjects")
或者,由于两个类共享同一个命名空间,您还可以使用:
* @ORM\ManyToOne(targetEntity="User",inversedBy="subjects")
targetEntity必须是完全限定类名(FQCN),除非引用同一命名空间中的类,否则可能会使用短名称(如上一个示例).