Php Symfony2:对阵列集合排序

Php Symfony2:对阵列集合排序,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,根据需要,应该使用OrderBy对ArrayCollection进行排序。在列出一个家庭的联系日期集合时,不知何故,以下情况并不能达到这一结果: 住户实体(片段) 联系人实体(代码段) 模板(用于最近的5个?)(代码段) 您的问题在字段名中。正如我从您的联系人实体中看到的,您的字段名为$contactField,但是@ORM\OrderBy({“Contact\u date”=“DESC”})从您的实体中应该使用列名而不是字段名。我认为,如果您将您的联系日期更改为联系日期,它将正常工作 很奇怪,

根据需要,应该使用OrderBy对ArrayCollection进行排序。在列出一个家庭的联系日期集合时,不知何故,以下情况并不能达到这一结果:

住户实体(片段) 联系人实体(代码段) 模板(用于最近的5个?)(代码段)
您的问题在字段名中。正如我从您的联系人实体中看到的,您的字段名为
$contactField
,但是
@ORM\OrderBy({“Contact\u date”=“DESC”})
从您的实体中应该使用列名而不是字段名。我认为,如果您将您的
联系日期
更改为
联系日期
,它将正常工作


很奇怪,你在这个问题上没有犯错误。因为条令通常与字段而不是列一起操作。

OrderBy
是一个例外,它接受表字段名,而不是属性名。@meze:我也这么认为。原来这是答案的一部分。不过,为了找到这一点,我不得不删除Doctrine XML元数据,这掩盖了其他一些小的注释映射错误。
/**
 * @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