在渲染模板
期间抛出了异常捕获致命错误:类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 %}
答案 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 %}