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