【问题标题】:Zend_DB join results into array?Zend_DB 将结果加入数组?
【发布时间】:2010-11-13 20:56:53
【问题描述】:

(解决了!谢谢大家的建议=)

$contact = $db->select('*') ->from(array('c' => 'contact'), array('name', 'id')) ->join(array('d' => 'detail'), 'c.id = d.contact_id', array('d.type')) ->where('c.company_id = ?', $defaultNamespace->userdata['company_id'])
->where('c.effective ->where('c.expire > ?', date("Y-m-d H:i:s"))
->order('c.effective DESC'); $stmt = $db->query($contact); $contact = $stmt->fetchAll();

          foreach($contact as &$point){

            print_r($point);

          }

输出:

Array ([name] => John Doe [id] => 1 [type] => Skype) Array ([name] => John Doe [id] => 1 [type] => MSN)

我想要:

数组 ([name] => John Doe [id] => 1 [point] => 数组(Skype, MSN))

【问题讨论】:

  • 您将无法让 zend 为您生成该子数组。我猜你能做的最好的事情是:array( [name] => John Doe, [id] => 1, [point1] => Skype, [point2] => MSN, [point3] => ' ');您可以通过将详细信息表连接到联系表几次来做到这一点。或者循环遍历结果并进行子调用,但我猜你会喜欢在数据库中一次性完成。
  • 你说你解决了。您应该发布解决方案并接受它作为答案。这有助于使 Stack Overflow 变得有用。

标签: php mysql zend-framework join


【解决方案1】:

您可以通过使用自定义 Zend_Db_Select 类来做到这一点。该类将采用 一些 列并使用 GROUP CONCAT 分隔符将它们分解,您将在查询中使用组 concat ;)这是我能想到的唯一解决方案;)

【讨论】:

    【解决方案2】:

    在 mySQL 中,您可以执行 SELECT id, name, GROUP_CONCAT(type) FROM contact WHERE id = 3 GROUP BY id, name, type; 之类的操作

    不确定它是否适合你,但你可以试试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 2017-12-27
      • 1970-01-01
      相关资源
      最近更新 更多