0

好的,我的控制器中有一个可以工作的功能。但是,我不应该在控制器中调用数据库(众所周知)。我通常可以轻松地将信息从模型迁移到控制器,但我很难使用这个。我什至不会分享我的模型版本……你怎么把它写给模型?

    $this -> db -> select('title, price, number_sites, number_entries, white_label'); 
    $query = $this -> db -> get('pricing', 3); // limit 3 rows

    $row1 = $query->row(0); // 0 grabs first row in table: Package 1        
    $data['row1'] = $row1;

    $row2 = $query->row(1); // 1 grabs second row in table: Package 2        
    $data['row2'] = $row2;

    $row3 = $query->row(2); // 2 grabs third row in table: Package 3        
    $data['row3'] = $row3;
4

3 回答 3

2

只需将其复制并粘贴到您要调用的函数中的模型中:

function dbstuff(){
    $this -> db -> select('title, price, number_sites, number_entries, white_label'); 
    $query = $this -> db -> get('pricing', 3); // limit 3 rows

    $row1 = $query->row(0); // 0 grabs first row in table: Package 1        
    $data['row1'] = $row1;

    $row2 = $query->row(1); // 1 grabs second row in table: Package 2        
    $data['row2'] = $row2;

    $row3 = $query->row(2); // 2 grabs third row in table: Package 3        
    $data['row3'] = $row3;
    return $data;
}

然后在你的控制器中:

$this->load->model('MyModel');
$data=$this->MyModel->dbstuff();
$this->load->view('view',$data);
于 2012-11-08T19:36:54.893 回答
0

我建议您创建一个模型类,其中包含一个静态方法,用于包装查询以从数据库中选择并返回模型类的实例。

例如:

class MyModelClass {

// Your class code here

static function findByPricing($price){

    $output = array();

   //run your query here using your db handler

   foreach($resultingrows as $row){

       $object = new MyModelClass();
       $object->setAttributeOne($row['attribute_one');
       $object->setAttributeTwo($row['attribute_two');
       $object->setAttributeThree($row['attribute_three');

       $output[] = $object;

   }

   return $output;

}


}

然后从您的控制器中执行以下操作:

 $objects = MyModelClass::findByPricing(3);
于 2012-11-08T19:43:22.327 回答
0

首先查阅文档总是一个好主意。

模型用户指南

一旦你有了编写模型类的信息,就创建一个并将这个函数放入其中。

public function getPricing(){
  return  $this -> db -> select('title, price, number_sites, number_entries, white_label') -> get('pricing', 3) -> result_array();
}
于 2012-11-08T19:51:58.853 回答