How to get multidimensional array from yii 'CDbDataReade


How to get multidimensional array from yii 'CDbDataReader::readAll'

它是数据库中的两个表。第一个表格包含产品列表,第二个表格包含选项列表。一种产品可能有多种选择。我已经用yii查询散货构建了下一个查询

SELECT DISTINCT `p`.`id`,
                `p`.`name`,
                `pc`.`category_id`,
                `c`.`name` AS `category_name`,
                `ov`.`value_str` AS `option_value`
FROM `cms_product` `p`
LEFT JOIN `cms_product_category` `pc` ON p.id = pc.product_id
LEFT JOIN `cms_category` `c` ON c.id = pc.category_id
LEFT JOIN `cms_product_option_set` `pos` ON p.id = pos.product_id
LEFT JOIN `cms_option_variant` `ov` ON ov.id=pos.option_variant_id
ORDER BY `p`.`id` ASC LIMIT 100

但是yii函数"CDbDataReader::readAll()"只为每个产品返回一个选项。如果我在MySQL中执行这个查询,效果会很好。如何使用yii 获得正确的结果

使用如下queryAll()方法:

$sql="SELECT DISTINCT `p`.`id`,
            `p`.`name`,
            `pc`.`category_id`,
            `c`.`name` AS `category_name`,
            `ov`.`value_str` AS `option_value`
FROM `cms_product` `p`
LEFT JOIN `cms_product_category` `pc` ON p.id = pc.product_id
LEFT JOIN `cms_category` `c` ON c.id = pc.category_id
LEFT JOIN `cms_product_option_set` `pos` ON p.id = pos.product_id
LEFT JOIN `cms_option_variant` `ov` ON ov.id=pos.option_variant_id
ORDER BY `p`.`id` ASC LIMIT 100";

然后:

$result=Yii::app()->db->createCommand($sql)->queryAll();

这将返回一个带有结果的数组。