我有两个实体映射如下:
class Natural
{
/**
* @var \User
*
* @ORM\ManyToOne(targetEntity="\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
...
}
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="SEQUENCE")
*/
protected $id;
...
}
在User
类上需要进行哪些更改才能访问Natural
属性/方法,例如在Twig模板上使用user.natural.some_property
?我应该在OneToMany
和User
之间添加Natural
关系,或者哪种方式可以获得此关系?
测试1
我将此添加到Natural
类:
/**
* @var \User
*
* @ORM\ManyToOne(targetEntity="\UserBundle\Entity\User", inversedBy="natural")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
protected $user;
这到Usuario
班:
/**
* @var \Natural
*
* @ORM\OneToMany(targetEntity="\UserBundle\Entity\Natural", mappedBy="user")
*/
protected $natural;
然后在我的模板中,我尝试以user.getNatural.getName
访问,但我收到此错误:
无法在NULL变量上访问属性(" getName") ("")在FOSUserBundle:注册:email.txt.twig第4行
我还尝试了另外一个user.getNatural[0].getName
,但是得到了另一个错误:
无法在NULL变量("")上访问密钥(" 0") FOSUserBundle:注册:第4行的email.txt.twig
我做错了什么?
答案 0 :(得分:1)
你的问题是双重的。
是的,你需要一个关于用户的OneToMany关系,甚至可能是带有mappedBy / inversedBy的bidirectional association。
您可以将实体作为模板变量传递,并将其用作树枝函数/方法。因此,您应该可以在模板中执行以下操作:
{% for Natural in User.getNatural().getValues() %}
{# do something with the Natural entity #}
{% endfor %}