我有一个问题,Symfony 2.8。我一直试图解决这个问题。我不知道我做错了什么。
我有两个实体,vector和vectorData。对于向量中的每个记录,vectorData中至少有6条记录。外键在DB(MySQL)中设置好。
我的Vectors.php
实体的相关部分:
/**
* @ORM\OneToMany(targetEntity="VectorData", mappedBy="vector")
*/
private $vectorData;
public function __construct() {
$this->vectorData = new ArrayCollection();
}
public function getVectorData()
{
return $this->vectorData;
}
public function setVectorData(ArrayCollection $vectorData)
{
$this->vectorData = $vectorData;
}
我的VectorData.php
实体的相关部分:
/**
* @ORM\ManyToOne(targetEntity="Vector", inversedBy="vectorData")
*/
protected $vector;
据我所知,ManyToOne
方面不需要setter或getter。我没有兴趣进行反向映射。
我得到的错误是:
在呈现模板期间抛出以下异常:
[语义错误]第0行,第61行附近'vd WHERE v.id =:idVectorAND':错误:类AppBundle \ Entity \ Vectors没有名为vectorData的关联
任何可能出错的想法?
答案 0 :(得分:1)
至少你的二传手是错误的。
public function setVectorData(ArrayCollection $vectorData)
{
$this->vectorData = $vectorData;
}
这是正确的:
public function addVectorData(VectorData $vectorData)
{
$this->vectorData->add($vectorData);
}
据我所知,ManyToOne方面不需要setter或getter。我没有兴趣进行反向映射。
令人怀疑
答案 1 :(得分:0)
您是否可以更改Entity VectorData以添加JoinColumn,您需要:
/**
* @ORM\ManyToOne(targetEntity="Vector", inversedBy="vectorData")
* @ORM\JoinColumn(name="vectorData_id", referencedColumnName="id")
*/
protected $vector;
我不知道Id列的name
是什么;在上面的示例中,我使用id
,但您可能会有不同的内容。
你能试试吗?我认为它可能会奏效。除非有不同的错误。
答案 2 :(得分:0)
首先: @Zaltex他的回答是完全正确的。你的二传手是错的。签入the Doctrine2 documentation here on how to manage your associations
第二次:当您的实体名为Illuminate\Auth\AuthManager
时,您使用targetEntity="Vector"
。
如果这是另一个拼写错误,那么您应该在发布之前更仔细地检查您的问题。人们正试图帮助你,但实际上是在浪费时间盯着一个不完整且无法证实的例子。
阅读 How to ask 和 How to create a Minimal, Complete, and Verifiable example 了解详情。
注意:如果您对“反向映射”不感兴趣,换句话说对双向关系不感兴趣,则应考虑将其更改为单向关系。简单地省略设置者和吸气剂是不可取的。