0

クエリにカスタム列を追加する必要があります。グリッドにカスタム列を追加することに関連する多くの 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)
4

1 に答える 1

3

クラスZend_Db_Select::columns()と組み合わせてメソッドを使用できると思います。Zend_Db_Expr例えば:

$select->columns(array(
    'my_value' => new Zend_Db_Expr('1')
));
于 2012-12-11T15:46:54.213 に答える