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;
你能提供完整的错误文本吗?当然,我加了。