教义 2.0 - 语义错误




我正在尝试映射我的实体,但是当我执行架构:更新,删除或创建时,我总是收到此错误。所以我尝试了许多解决方案,例如将此行添加到我的自动加载中.php:

AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php');

但它仍然不起作用...下面是冲突的代码:
文件实体:

/**
 * @var integer
 *
 * @ORMColumn(type="integer", nullable=false)
 * @ORMId
 * @ORMGeneratedValue(strategy="AUTO")
 * @ORMOnetoMany(targetEntity="IntranetExampleBundleEntityFile_Liaison", mappedBy="idFile", cascade={"persist"})
 * @ORMJoinColumn(name="id", referencedColumnName="idFile")
 */
    private $id;

File_Liaison实体:

/**
 * @var integer
 *
 * @ORMManyToOne (targetEntity="IntranetExampleBundleEntityFile", inversedBy="id")
 * @ORMJoinColumn (name="idFile", referencedColumnName="id")
 */
private $idFile;

这是错误:

[DoctrineCommonAnnotationsAnnotationException]
[Semantical Error] The annotation "@DoctrineORMMappingOnetoMany" in property IntranetExampleBundleEntityFile::$id does not exist, or could not be auto-loaded.

我阅读了许多关于这个问题的主题,但我没有找到任何有效的内容。感谢您的帮助!:-)

错误是您尝试添加一个关系,其中一个文件具有许多File_liaison因此文件端应具有File_liaison集合。事实并非如此,因为$id不能既是自动生成的整数又是实体集合。

尝试清理$id并在 File 实体中添加属性,如下所示

/**
 * @ORMOnetoMany(targetEntity="IntranetExampleBundleEntityFile_Liaison", mappedBy="idFile", cascade={"persist"})
 * 
 */
    private $liaisons;

然后实现适当的 addLiaison、removeLiaison 和 getLiaisons 方法

/**
 * Add liaison
 *
 * @param IntranetExampleBundleEntityFile_Liaison $liaison
 */
public function addLiaison(IntranetExampleBundleEntityFile_Liaison $liaison)
{
    $this->liaisons[] = $liaison;
}
/**
 * Get liaisons
 *
 * @return DoctrineCommonCollectionsCollection 
 */
public function getLiaisons()
{
    return $this->liaisons;
}

最后更新File_liaison 反转者 为 $idFile

/**
 * @var integer
 *
 * @ORMManyToOne (targetEntity="IntranetExampleBundleEntityFile", inversedBy="liaisons")
 * @ORMJoinColumn (name="idFile", referencedColumnName="id")
 */
private $idFile;

显然,这没有经过测试,但它应该让你很好地了解你做错了什么。

感谢您的帮助!
错误仍然出现,但我解决了问题!文件实体有问题。我改变了它:

    /**
 * @ORMId
 * @var integer
 * 
 * @ORMColumn(name="refFile", type="integer")
 * @ORMGeneratedValue(strategy="AUTO")
 * 
 * @ORMOneToMany(targetEntity="IntranetExampleBundleEntityFile_Liaison", mappedBy="idFile", cascade={"persist"})
 * @ORMJoinColumn(name="idFile", referencedColumnName="refFile")
 */
private $refFile;

相关内容

  • 没有找到相关文章