私のモジュールのモデルクラスのメソッドを使用する際に問題があります。
私は2つの保護されたメソッドをトリガーするpublic関数を持っています。問題は、最初の1だけが値を返すことです。 _getCustomerRedeeemedPoints()で、私はそれが正常に動作します$this
Mage::getResourceModel('points/points_collection')
によって置き換え、場合、Magento:1つのモデルでさまざまなメソッドを使用します。
<?php
class Osdave_Points_Model_Mysql4_Points_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
const POINTS_CONFIRMED = 2;
const POINTS_REDEEMED = 4;
protected $_customer;
public function _construct()
{
parent::_construct();
$this->_init('points/points');
$this->_customer = Mage::getSingleton('customer/session')->getCustomer();
}
public function getCustomerAvailablePoints()
{
$confirmed = $this->_getCustomerConfirmedPoints();
$redeemed = $this->_getCustomerRedeeemedPoints();
$balance = ($confirmed - $redeemed);
return $balance;
}
protected function _getCustomerConfirmedPoints()
{
$availablePoints = $this->addFieldToFilter('customer_id', $this->_customer->getId())
->addFieldToFilter('points_status', self::POINTS_CONFIRMED)
->addFieldToSelect('points_pending')
->addExpressionFieldToSelect('available_points', 'SUM({{points_pending}})', 'points_pending');
return $availablePoints->getFirstItem()->getAvailablePoints();
}
protected function _getCustomerRedeeemedPoints()
{
$redeemedPoints = $this->addFieldToFilter('customer_id', $this->_customer->getId())
->addFieldToFilter('points_status', self::POINTS_REDEEMED)
->addFieldToSelect('points_pending')
->addExpressionFieldToSelect('redeemed_points', 'SUM({{points_pending}})', 'points_pending');
return $redeemedPoints->getFirstItem()->getRedeemedPoints();
}
}
今:
はここに私のクラスです。しかし、私は既にクラスを脇にしているので、私はメイジを介してそれをインスタンス化しなければならない理由を理解していません:私が理解する限り、$this
は1回のみ利用可能です。
だから私は何か間違っているのですか?
ありがとうございます。
ハムは、それは奇妙ですジョー。 – OSdave