Symfony 在细枝模板中映射和显示

Symfony 在细枝模板中映射和显示,symfony,doctrine-orm,twig,Symfony,Doctrine Orm,Twig,嗨,我正在尝试创建这样的映射 class Users { /** * @var integer * * @ORM\Column(name="id_users", type="smallint", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string

嗨,我正在尝试创建这样的映射

class Users
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id_users", type="smallint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=100, nullable=true)
     */
    private $name;
    /**
     *
     * @var ArrayCollection
     * @ORM\OneToMany(targetEntity="UsersEmailAddresses", mappedBy="users")
     * @ORM\JoinColumn(name="id_users", referencedColumnName="users_id")
     */
    private $email;

当我试图用一个用户显示多封电子邮件时,比如

<td>{{ entity.name }}</td>
<td><ul>
{% for e in entity.email %}
     <li>{{ e.email }}</li>
{% endfor %}
</ul></td>
{{entity.name}
    {entity.email%中的e的%s}
  • {{e.email}
  • {%endfor%}
我得到的错误类似于
在呈现模板的过程中抛出了一个异常(/var/www/symfony/vendor/doctrine/orm/lib/doctrine/orm/Persisters/basicentypersister.php第1575行的/var/www/symfony/src/Test/UserBundle/Resources/views/users/index.html.twig中的用户)


22行是循环的

这里有一个映射错误。文件:,以及

  • ReferencedColumnName引用相关实体的ID字段

  • name是包含要创建的外键的额外列的名称-

  • referencedColumnName是相关实体的外键

  • 您可以在拥有的上定义多个对象,在相反的一侧定义一个对象

  • 不要两面都使用一个omany

  • joinColumn定义必须位于您的拥有方(即使用inversedBy的定义)


如果您有多对一的用户关系。。。到一个地址你不知道的。。 JoinColum将位于您的用户实体上(也称为双向关联的拥有方)

。。应该是

 * @ORM\JoinColumn(name="id_users", referencedColumnName="id_users_email_adresses")
 */
但是。。。在您的情况下…

一个用户应有多个地址。。。地址将是双向一对多关系的拥有方

用户

一家公司,mappedBy

地址

多通,通过(+列)反转


提示:

您可以完全编辑@JoinColumn,因为它将自动生成

实体名称通常应为单数


为什么数据库中有这么多复杂的id列……让一个表用户有一个列id还不够吗?

我不知道为什么,我总是使用类似
id
+\u table\u name的结构更新我的答案-有什么不清楚或需要更多解释的吗?否则请接受:)别忘了用条令更新你的模式:模式:更新——强制你从答案中删除了接受——有什么不起作用的吗?我能帮什么忙:)
 * @ORM\JoinColumn(name="id_users", referencedColumnName="users_id")
 */
 * @ORM\JoinColumn(name="id_users", referencedColumnName="id_users_email_adresses")
 */