我正在使用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),除非引用同一命名空间中的类,否则可能会使用短名称(如上一个示例).
原文地址:https://www.jb51.cc/php/131958.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。