根据this,应该使用OrderBy对ArrayCollection进行排序。在列出一个家庭的联系日期集合时,以下某些方法无法实现此结果:
/**
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="Mana\ClientBundle\Entity\Contact", mappedBy="household")
* @ORM\OrderBy({"contact_date" = "DESC"})
*/
private $contacts;
/**
* Contact
*
* @ORM\Table(name="contact", indexes={@ORM\Index(name="idx_contact_household_idx", columns={"household_id"}), @ORM\Index(name="idx_contact_type_idx", columns={"contact_type_id"}), @ORM\Index(name="idx_contact_center_idx", columns={"center_id"})})
* @ORM\Entity
*/
class Contact
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="contact_date", type="date", nullable=true)
*/
private $contactDate;
...
}
{% for i in 0..4 %}
{% if household.contacts[i] is defined %}
<tr><td>{{ household.contacts[i].contactDate|date('m/d/Y') }}</td>
...{% endif %}
{% endfor %}
Date
05/02/2012
05/23/2012
05/30/2012
06/26/2012
06/06/2012
答案 0 :(得分:1)
您在字段名称中的问题。正如我可以看到您的联系实体,您的字段被命名为$contactField
但 Houshold 实体中的@ORM\OrderBy({"contact_date" = "DESC"})
使用列名而不是字段名称。我认为,如果您将contact_date
更改为contactDate
,它将有效。
非常奇怪的是,Doctrine对此问题没有任何错误。因为Doctrine通常使用字段而不是列。