Php 条令2.0-语义错误

Php 条令2.0-语义错误,php,symfony,orm,doctrine-orm,mapping,Php,Symfony,Orm,Doctrine Orm,Mapping,我试图映射我的实体,但在执行模式更新、删除或创建时总是会出现此错误。所以我尝试了很多解决方案,比如将这一行添加到我的autoload.php中: AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php'); 但它仍然不起作用。。。以下是冲突代码: 文件实体: /** * @var integer * * @O


我试图映射我的实体,但在执行模式更新、删除或创建时总是会出现此错误。所以我尝试了很多解决方案,比如将这一行添加到我的autoload.php中:

AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDriver.php');
但它仍然不起作用。。。以下是冲突代码:
文件实体:

/**
 * @var integer
 *
 * @ORM\Column(type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 * @ORM\OnetoMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
 * @ORM\JoinColumn(name="id", referencedColumnName="idFile")
 */
    private $id;
/**
 * @var integer
 *
 * @ORM\ManyToOne (targetEntity="Intranet\ExampleBundle\Entity\File", inversedBy="id")
 * @ORM\JoinColumn (name="idFile", referencedColumnName="id")
 */
private $idFile;
文件\u联络实体:

/**
 * @var integer
 *
 * @ORM\Column(type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 * @ORM\OnetoMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
 * @ORM\JoinColumn(name="id", referencedColumnName="idFile")
 */
    private $id;
/**
 * @var integer
 *
 * @ORM\ManyToOne (targetEntity="Intranet\ExampleBundle\Entity\File", inversedBy="id")
 * @ORM\JoinColumn (name="idFile", referencedColumnName="id")
 */
private $idFile;
下面是错误:

[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@Doctrine\ORM\Mapping\OnetoMany" in property Intranet\ExampleBundle\Entity\File::$id does not exist, or could not be auto-loaded.
我读了很多关于这个问题的话题,但是我没有发现任何有用的东西。
谢谢你的帮助!:-)

错误在于您试图添加一个关系,其中一个文件有多个文件联络,因此文件端应该有一个文件联络的集合。但情况并非如此,因为
$id
不能同时是自动生成的整数和实体集合

尝试清理
$id
并在文件实体中添加属性,例如

/**
 * @ORM\OnetoMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
 * 
 */
    private $liaisons;
然后执行适当的addlianction、removeliason和getliancons方法

/**
 * Add liaison
 *
 * @param \Intranet\ExampleBundle\Entity\File_Liaison $liaison
 */
public function addLiaison(\Intranet\ExampleBundle\Entity\File_Liaison $liaison)
{
    $this->liaisons[] = $liaison;
}

/**
 * Get liaisons
 *
 * @return \Doctrine\Common\Collections\Collection 
 */
public function getLiaisons()
{
    return $this->liaisons;
}
最后更新
$idFile

/**
 * @var integer
 *
 * @ORM\ManyToOne (targetEntity="Intranet\ExampleBundle\Entity\File", inversedBy="liaisons")
 * @ORM\JoinColumn (name="idFile", referencedColumnName="id")
 */
private $idFile;

显然,这没有经过测试,但它应该能让您非常清楚自己做错了什么。

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

    /**
 * @ORM\Id
 * @var integer
 * 
 * @ORM\Column(name="refFile", type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 * 
 * @ORM\OneToMany(targetEntity="Intranet\ExampleBundle\Entity\File_Liaison", mappedBy="idFile", cascade={"persist"})
 * @ORM\JoinColumn(name="idFile", referencedColumnName="refFile")
 */
private $refFile;

你能提供完整的错误文本吗?当然,我加了。