在呈现模板期间抛出了异常

时间:2016-05-22 20:50:35

标签: symfony orm doctrine

在渲染模板

期间抛出了异常
  

捕获致命错误:类Doctrine \ ORM \ PersistentCollection的对象无法转换为字符串

AppBundle:Dashboard:index.html.twig第46行。

这是因为appointment.employees而发生的。有人可以解释一下吗? 这是具有以下关系的实体:

/**
 * @ORM\ManyToMany(targetEntity="LamecoEmployee")
 * @ORM\JoinTable(name="appointment_lamecoemployee",
 *      joinColumns={@ORM\JoinColumn(name="appointment_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="lamecoempoloyee_id", referencedColumnName="id")}
 *      )
 */
protected $employees;

这是观点:

{% for appointment in appointments %}
    <tr>
        <td>{{appointment.startDate|date('H:i')}}</td>
        <td>{{appointment.client.companyname}}</td>
        <td></td>
        <td>{{appointment.employees}}</td>
        <td>{{appointment.description}}</td>
    </tr> <br>
{% endfor %}

2 个答案:

答案 0 :(得分:5)

你必须遍历appointment.employees,因为它是一个集合(与约会相同),或者将它转换为twig可以内联呈现的东西。

E.g。

{% for employee in appointment.employees %}
    {{employee.name}}
{% endfor %}

或者,如果你只想要一个计数而不是迭代:

{{appointment.employees|length}}

答案 1 :(得分:0)

嗯,您正在尝试打印一组员工。 PHP根本不知道如何做到这一点。

属性@ORM\ManyToMany上的注释$employees表示约会可以链接到多个LamecoEmployee(并且员工可以链接到多个约会)。因此$ employee属性的类型不是LamecoEmployee,而是LamecoEmployee的集合。

如果您在LamecoEmployee类中定义了__toString()方法,则可以打印一名员工,但您不能同时打印一组员工。要打印约会的所有员工,您可以循环appointment.employees

{% for employee in appointment.employees %}
    {{ employee }}
{% endfor %}