Magento,添加计算的自定义字段以供查询以供日后使用

时间:2012-12-11 15:08:24

标签: magento magento-1.7

我需要在查询中添加自定义列。我看到很多与在网格上添加自定义列相关的SO问题,这不是问题。但我无法在我的模型上不存在的select子句中添加新字段。这是我的代码:

我的_prepareCollection()函数提供了这个代码段:

$collection = Mage::getModel('banners/bannersadmin')->getCollection();
$collection->getSelect()
        ->join(array("T"=>$this->_bannersadminTable), "main_table.banner_start_date BETWEEN T.banner_start_date AND T.banner_end_date", array())
        ->where("main_table.bannerID < T.bannerID");

    var_dump((string) $collection->getselect());

结果查询如下:

SELECT `main_table`.*
  FROM `dts_banners_admin` AS `main_table`
 INNER JOIN `dts_banners_admin` AS `T`
    ON main_table.banner_start_date BETWEEN T.banner_start_date AND T.banner_end_date
 WHERE (main_table.bannerID < T.bannerID)

但是我需要这个略有不同的结果,aux_value列添加了我自己的值,在这种情况下为1,但可能是我想要的任何其他内容。

SELECT `main_table`.*, 1 AS `aux_value`
  FROM `dts_banners_admin` AS `main_table`
 INNER JOIN `dts_banners_admin` AS `T`
    ON main_table.banner_start_date BETWEEN T.banner_start_date AND T.banner_end_date
 WHERE (main_table.bannerID < T.bannerID)

1 个答案:

答案 0 :(得分:3)

我认为您可以将Zend_Db_Select::columns()方法与Zend_Db_Expr类结合使用。例如:

$select->columns(array(
    'my_value' => new Zend_Db_Expr('1')
));