如果我在主表中加入的表有两行,父表ID为1,那么如何在Magento的_preparecollection中执行Select语句。
我现在的表。
表2(sales_flat_invoice_comment)
我当前的准备收藏
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection->getSelect()->join( array('a'=> mgmx_sales_flat_invoice_comment), 'a.parent_id = main_table.entity_id', array('a.comment'));
$this->setCollection($collection);
return parent::_prepareCollection();
这个查询,在echo中将是这样的
SELECT
main_table
。*,a
。comment
来自mgmx_sales_flat_invoice_grid
ASmain_table
INNER JOINmgmx_sales_flat_invoice_comment
ASa
在a.parent_id = main_table.entity_id
但如果此查询在表2中找到多于一行,则会返回错误。
我想要的是类似下面的内容
带|作为分隔符。
我如何在Magento的_prepareCollection中实现这一目标。
答案 0 :(得分:0)
您必须按entity_id
分组,然后使用group_concat
创建评论栏。您可以在组中定义分隔符。
连锁列的长度有限制。因此,根据单个注释的长度和可能发生的注释数量,您无法在结果中获得所有注释。
我希望这有助于解决您的问题。
答案 1 :(得分:0)
要在zend框架中加载group_concat,可以使用Zend_Db_Expr对象对其进行定义
类似
$collection->getSelect()->join(
array('a'=> new Zend_Db_Expr('GROUP_CONCAT(mgmx_sales_flat_invoice_comment)')),
'a.parent_id = main_table.entity_id',
array('a.comment')
);
何时需要在zend框架内执行自定义数据库功能的知识很容易。