Symfony 2,Doctrine 2.1。
我有3个实体,其中一个是中间实体(连接表)。让我们说它是SomeObject,SomeProperty和ObjectProperties。
问题:我无法获得SomeProperty' name'的价值。属性。这是代码:
[...]
class SomeObject
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
*
* @var ObjectProperties $objectProperties
*
* @ORM\OneToMany(targetEntity="ObjectProperties", mappedBy="object_id", cascade={"all"})
*/
private $objectProperties;
[...]
[...]
class SomeProperty
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
* @ORM\OneToMany(targetEntity="ObjectProperties", mappedBy="property_id", cascade={"all"})
*/
private $id;
/**
* @var string $name
*
*/
private $name;//I NEED TO GET VALUE OF $name
[...]
[...]
class ObjectProperties
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="SomeObject", inversedBy="id", cascade={"all"})
* @ORM\JoinColumn(name="object_id", referencedColumnName="id")
*/
private $object_id;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="SomeProperty", inversedBy="id", cascade={"all"})
* @ORM\JoinColumn(name="property_id", referencedColumnName="id")
*/
private $property_id;
[...]
像往常一样塞特尔和吸气鬼。
在我的控制器中,我有以下几点:
$entity = $em->getRepository('SomeTestBundle:SomeObject')->find($id);
[...]
$props = $entity->getObjectProperties();
foreach ($props as $prop){
echo '---------------------------<br>';
var_dump($prop->getPropertyId()->getName());
}
现在,getName()给我null结果,但如果我用getId替换它,它按预期工作。如果我尝试在表单类中使用它,则相同。是因为SomeProperty-&gt; name和ObjectProperties之间没有学说关联?
我认为我不太了解学说应该如何发挥作用。我认为在联结表中只需要property_id和object_id,否则它对我来说没有多大意义,因为SomeProperty用作字典表,所以我可以在一个地方更改SomeProperty-&gt;名称。
我严重坚持下去。是不是缺乏某种配置选项,或者我通常没有得到更大的影响?
答案 0 :(得分:0)
认为这是一个错字 - 我通过在SomeProperty类中添加缺少的@Column注释使其成功:
/**
* @var string $name
* @ORM\Column(type="string")
*/
private $name;
不知道为什么我一开始就错过了它...我想“经验就是你得到的东西,在你需要之后。”