如何在代码点火器中将数据从控制器传递到模型


How to pass data from controller to models in codeigniter

我通过URL将参数从视图传递到控制器。现在我想把它从控制器发送到模型,这样我就可以用它从表中提取数据。这是我的代码:

控制器:

function view(){
    if(isset($_GET['r'])) {
        $rank = $_GET['r'];
    }
    $rank=$this->uri->segment($rank);
    $this->load->model('names_rank');
    $data=$this->names_rank->get_names($rank);
    print_r($rank); 
}   

型号:

function get_names($rank){  
    $this->db->select('u.*,v.*');
    $this->db->from('unit_member u, Vyeo v');
    $this->db->where('v.fno = u.fno');
    $this->db->where('u.present = ""');
    $this->db->where('v.rank', $rank);
    $this->db->where('v.date_of_end="0000-00-00"');
    $query = $this->db->get();
    return $query->result_array();
}

结果是:

遇到PHP错误严重性:警告消息:缺少Names_rank::get_name()的参数1,在中调用C: 第32行的''examplep''htdocs''unit''application''controllers''names.php和定义

这将用于发送到模型,但您的代码对我来说不可理解,您在IF中设置变量后重新声明变量吗?你是想打印模型的输出吗?

我认为你可能正在努力实现这一点?

function view() {
if(isset($_GET['r'])) {
$rank = $_GET['r'];
}else{
$rank = $this->uri->segment($rank);
}
$this->load->model('names_rank');
$data = $this->names_rank->get_names($rank);
print_r($data); 
}   

您可以将参数传递给您的模型。首先,如果你没有在自动加载时启用你的模型,你必须在控制器中调用它。

您的型号:

<?php
class AwesomeModel extends CI_Model 
{
   publif function do_work($param, $anotherParam)
   {
     //code here
   }
}
Then your controller:
<?php
class AwesomeController extends CI_Controller
{
    public function __construct()
    {
        /*
         * load in constructor so not need to recall every time you want use it
         * second parameter is model renaming (optional)
         */
        $this->load->model('AwesomeModel', 'awe');                                               
    }
    public function pass_data()
    {
        $this->awe->do_work($param1, $param2);
    }
?>

仅此而已。