我创建了2个mysql视图,并从中生成了2个模型。

最受欢迎的优惠券

class MostPopularCoupon extends CActiveRecord
{
    public function tableName()
    {
        return 'most_popular_coupon';
    }

    public function rules()
    {
        return array(
            array('coupon_id', 'required'),
            array('coupon_id', 'numerical', 'integerOnly'=>true),
            array('left_coupons', 'length', 'max'=>22),
            array('stopped_at', 'safe'),
            array('left_coupons, coupon_id, stopped_at', 'safe', 'on'=>'search'),
        );
    }

    public function relations()
    {
        return array(
        );
    }

    public function attributeLabels()
    {
        return array(
            'left_coupons' => 'Left Coupons',
            'coupon_id' => 'Coupon',
            'stopped_at' => 'Stopped At',
        );
    }

    public function search()
    {
        $criteria=new CDbCriteria;
        $criteria->compare('left_coupons',$this->left_coupons,true);
        $criteria->compare('coupon_id',$this->coupon_id);
        $criteria->compare('stopped_at',$this->stopped_at,true);

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }

    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
}


最活跃城市

class MostActiveCity extends CActiveRecord
{
    public function tableName()
    {
        return 'most_active_city';
    }
    public function rules()
    {
        return array(
            array('mines', 'length', 'max'=>21),
            array('city', 'length', 'max'=>255),
            array('mines, city', 'safe', 'on'=>'search'),
        );
    }

    public function relations()
    {
        return array();
    }

    public function attributeLabels()
    {
        return array(
            'mines' => 'Mines',
            'city' => 'City',
        );
    }

    public function search()
    {
        $criteria=new CDbCriteria;

        $criteria->compare('mines',$this->mines,true);
        $criteria->compare('city',$this->city,true);

        return new CActiveDataProvider($this, array(
            'criteria'=>$criteria,
        ));
    }
    public static function model($className=__CLASS__)
    {
        return parent::model($className);
    }
}


但是由于没有经验,所以不知道如何正确使用它们。我需要在查询中替换company_id以获取属于当前用户的公司数据...

最佳答案

请重新锁定您的设计。您最好拥有City {}和Coupon {}的模型类,然后在Coupon类中具有例如MostPopularCoupons的功能。然后,您可以将它们称为类的函数。例如。

在您的模型中

class Coupon extends CActiveRecord
{

    // NOTE: This is important for your alias column.
    public $couponCount;

    public function tableName()
    {
        return 'coupon';
    }
    ...
    public function MostPopularCoupons()
    {
       $Criteria = new CDbCriteria();
       $Criteria->select = ' count(*) as couponCount ';
       $lstCoupons       = Coupon::model()->findAll($Criteria);

       return $lstCoupons;
    }

}


然后,在您的控制器中

$coupon_id = 10;
$model1 = Coupon::model()->findByPK((int)$coupon_id);

$lstCouponCount = Coupon::MostPopularCoupons();

10-04 10:54
查看更多