Symfony2 Doctrine manyToOne EntityNotFoundException

时间:2014-08-22 20:11:58

标签: php symfony doctrine many-to-one

我刚刚开始学习Symfony,但已经遇到了一些我无法弄清楚如何解决的问题。

我有一个记录数据库表,可能会也可能不会链接到用户。一个用户可以拥有许多记录,但记录不必与用户相关联

我在yml中使用了doctrine来创建2个表之间的manyToOne关系

user:
        targetEntity: User
        mappedBy: records
        joinColumn:
            name: user_id
            referencedColumnName: id

当记录有与之关联的用户

时,这非常正常

当针对记录的user_id设置为0

时,会出现问题

Symfony将其作为用户对象加载,但是当我尝试

{{ record.user.name }}

在我的twig模板中循环遍历每条记录时,我得到一个抛出的EntityNotFoundException

我尝试过做不同的事情,比如

{% if record.user is null %}

没有运气

我能找到的唯一类似问题是this one

我知道这会解决我的问题,但是当我学习Symfony和Doctrine时,我想知道自己编写SQL是我唯一的选择,还是因为我有什么东西不能使这项工作成功

我想我也可以创建一个id为0的用户,但我想知道应该怎么做而不是做那样脏的事

我的模型执行以下操作来加载记录

$repository = $this->doctrine->getRepository('SiteBundle:Records');
$records = $repository->findAll();

然后将其传递给我的twig模板,该模板循环输出

提前感谢任何输入

2 个答案:

答案 0 :(得分:0)

请参阅https://stackoverflow.com/a/17338761/3574819

user_id设置为0,而不是将user_id的用户设置为null,而不是将user设置为defined

然后,您可以在访问其属性之前检查{% if records.user is not null %} {{ records.user.name }} {% endif %} 对象是否为空(或者您可能需要使用{{1}})。

{{1}}

答案 1 :(得分:0)

你应该试试这个

                {% if records.user is not empty %}
                   {{ records.user.name }}
                 {% endif %}

代替" null" ,"空"物业在这里很好..