目标实体“;某个实体“;找不到


The target-entity "some entity" cannot be found

我在使用带有条令的ZF2时遇到了这个错误。

在"主题''实体''主题#用户"中找不到目标实体实体实体''用户。

这是我的代码片段。

<?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),除非引用相同命名空间中的类,在这种情况下可以使用短名称(根据上面的最后一个示例)。

在我们的例子中,文件名与类名不同:这只是一个拼写错误。

我也遇到了同样的问题。我的问题是对案件的敏感性。

错误:

class Package {
    /**
     * @ORM'OneToMany(targetEntity="PackagUSA", mappedBy="package")
     */
    private Collection $packageusas;
}
class Packageusa {
    /**
     * @ORM'ManyToOne(targetEntity="Package", inversedBy="packageusas")
     * @ORM'JoinColumn(name="package_id", referencedColumnName="id")
     */
    private Package $package;
}

好:

class Package {
    /**
     * @ORM'OneToMany(targetEntity="PackageUSA", mappedBy="package")
     */
    private Collection $packageusas;
}
class PackageUSA {
    /**
     * @ORM'ManyToOne(targetEntity="Package", inversedBy="packageusas")
     * @ORM'JoinColumn(name="package_id", referencedColumnName="id")
     */
    private Package $package;
}