我有两张桌子。第一个表包含要约详细信息,第二个表包含要约语言集合(可以在主要要约形式中选择集合)。我想使用" join"语言表在单个查询中获取所有这些。它的样子如何: Relation
尝试获取我希望将所有提供语言作为一个字段的所有优惠。
array [
'id' => string '11',
'name' => string '134',
'date' => string '01-12-2016',
'languages' => array(all language value from related table)
]
这是我的问题:
$select = $this->getDbTable()->select()
->setIntegrityCheck(false)
->from(array('o' => 'offers'), array('o.*'))
->joinLeft(array('ol' => 'offer_language'), 'ol.id_offer = o.id', array('ol.*'));
$resultSet = $this->getDbTable()->fetchAll($select)
通过这种方式,如果一个报价有三种语言,那么我会得到三种不同语言字段的报价。
Zend版本:1.11
感谢您的帮助。
答案 0 :(得分:0)
解决方案是使用带有GROUP_CONCAT的Zend_Db_Expr。 这里有两篇帖子会给你一个明确的解释: Can I concatenate multiple MySQL rows into one field?和How to use GROUP_CONCAT with Zend Framework?
您的代码最终会看起来像这样:
$select = $this->getDbTable()->select()
->setIntegrityCheck(false)
->from(array('o' => 'offers'), array('o.*'))
->joinLeft(array('ol' => 'offer_language'), 'ol.id_offer = o.id', array('languages' => new Zend_Db_Expr('GROUP_CONCAT(ol.language)')))
->group('o.id');
祝你好运!