我正在使用Doctrine2 ORM在Symfony2网页上工作。
我有一个名为phone
的列的付款表。问题是我需要通过电话号码对所有这些付款进行分组,但结果必须是电话下的一系列付款,而不是他们的计数(简单GROUP BY的结果)。
目前,我使用一种简单的算法,将简单的付款数组([])解析为关联数组(phone => [])。它有效,但我发现它对进一步开发有点无效。
我在想像GROUP_CONCAT这样的东西在处理对象,而不是字符串,但我还没找到。
我的DQL看起来像这样:
SELECT p FROM payments as p WHERE = ...
我正在寻找类似的东西:
SELECT GROUP_CONCAT(p) FROM payments as p GROUP BY p.phone WHERE = ...
我正在寻找的结果:
array(5) {
"123456789": [0 => Payment(), 1 => Payment()],
"234567891": [0 => Payment()],
....
}
第二个查询效果很好,因为付款已经定义了一个toString()方法,但我需要对该对象进行操作,所以我对字符串表示不满意。
在我撰写这篇文章时,我不得不承认数据库的设计可能不正确。 M:N(如用户(电话):付款)关系可能是实际的解决方案,但我不确定是否允许我对我们的数据库进行设计更改。
你会如何处理它?</ p>