如何在控制器中使用模型功能?

时间:2014-04-09 11:14:09

标签: yii

型号

public function week($gid)
{

    $sensor = Yii::app()->zdb->createCommand("select nid ,sdata,stype,timestamp from tbl_sensor where timestamp >= date('now','-30 days') antimestamp<date('now');")->queryAll();
    return $sensor;

}

3 个答案:

答案 0 :(得分:0)

你的模型应该是:

public function week()
{

$sensor = Yii::app()->zdb->createCommand("select nid ,sdata,stype,timestamp from tbl_sensor where timestamp >= date('now','-30 days') antimestamp<date('now');")->queryAll();
return $sensor;

}

你的控制器应该是:

public function actionReport() { 
    $user = User::model()->findByPk(Yii::app()->user->getId()); 
    $gwinfo =Sensor::model()->find('(gid)=?', array($user->gid)); 
    $model='';
    if(isset($_POST['week'])) { 
         $model= Sensor::model()->week(); 
    } 
    //$this->render('Reportht', array('gw'=>$gwinfo, 'user'=>$user)); 

    $this->redirect('index.php?r=site/report', array('gw'=>$gwinfo, 'user'=>$user,'model'=>$model)); 
}

注意:我已将model对象传递给您的视图,现在您可以在需要时使用该对象

答案 1 :(得分:0)

我希望您正在寻找“如何在模型中创建方法以及如何在Controller中使用”

试试这个

  1. 在Model中创建一个名为“MyModel”的方法

    function foo($param)
    {            
        $model = ModelName::model()->findAll("property=$param");
        return $model;
    }
    
  2. 在我的控制器中使用它

    function actionBar()
    {
        $result=MyModel::model()->foo($param);
        //print_r($result);
    }
    

答案 2 :(得分:-1)

我希望上帝你不会覆盖现有模型来创建自己的查询。如果是这样,那么在您的模型中最好不要这样做。您应该阅读有关PDO的更多信息,因为使用该查询将更容易受到SQL注入攻击。您应该使用CActiveRecord将查询放入控制器中。您可以阅读此tutorial,因为它非常直观且易于学习。除非需要,否则不应修改模型。

如果您有任何机会使用自定义查询来查询数据库。您可以使用CDbCriteria生成自定义查询。