2010-11-13 48 views
0

(!解决了谢谢你们的意见=)Zend_DB将结果加入数组?

$触点= $ DB->选择( '*') - >从(阵列( 'C'=> '接触'),阵列(” ('''''')) - > join(array('d'=>'detail'),'c.id = d.contact_id',array('d.type')) - > where(' (''cffective <?',date(“Ymd H:i:s”))
- > where( 'c.expire>?',date(“Ymd H:i:s”))
- > order('c.effective DESC'); $ stmt = $ db-> query($ contact); $ contact = $ stmt-> fetchAll();

  foreach($contact as &$point){ 

      print_r($point); 

      } 

输出:

阵列([名称] => John Doe的[ID] => 1 [类型] =>的Skype)阵列([名称] => John Doe的[ID] => 1 [类型] => MSN)

我想:

阵列([名称] => John Doe的[ID] => 1 [点] =>数组(的Skype,MSN))

+0

您将无法拥有zend为您生成该子阵列。我猜你可以做的最好的是这样的:array([name] => John Doe,[id] => 1,[point1] => Skype,[point2] => MSN,[point3] => ');您可以通过将细节表连接到联系表几次来完成此操作。 OR循环遍历结果并进行子调用,但我猜你一定会喜欢它在db处。 – 2010-11-13 22:33:20

+1

你说你解决了它。您应该发布解决方案并接受它作为答案。这有助于使堆栈溢出有用。 – Sonny 2011-07-27 18:11:25

回答

-1

在mySQL你可以做类似SELECT id, name, GROUP_CONCAT(type) FROM contact WHERE id = 3 GROUP BY id, name, type;

不确定它会为你工作,但你可以尝试。

0

您可以使用自定义的Zend_Db_Select类来完成此操作。该班级将采取某些的列,并使用GROUP CONCAT分隔符将它们爆炸,并且您将在您的查询中使用组concat;)这是我能想到的唯一解决方案;)