繁体   English   中英

如何在单个模型功能上传递来自不同控制器功能的多个参数

[英]How to pass multiple parameters from different controller functions on single model function

我有两个控制器函数都需要一个模型函数,但是当我将参数传递给单个模型函数时,它显示一个错误,如果还有另一种方法可以传递参数,则需要帮助

控制者

public function view_files()
{
    $assignment_id='1255';
    $data['files'] = $this->AdminModel->getRows111();
    $this->load->view('admin/view_files', $data);
}

function download_test1(){
    $id = $this->uri->segment(3);

    if (empty($id)){
           redirect(base_url());
    }

    $data = $this->AdminModel->getRows111($id);
    $filename =$data['assignment_file_name'];
    $fileContents = file_get_contents(base_url('upload/'. 
         $data['assignment_file_name'])); 

    force_download($filename, $fileContents);

}

模型

public function getRows111($id=''){
    $this->db->select('*');
    $this->db->where('assignment_id','1255');
    $this->db->from('tbl_assignments_files');

    if($id){
        $this->db->where('assignment_file_id',$id);
        $query = $this->db->get();
        $result = $query->row_array();

    }else{
       $query = $this->db->get();
       $result = $query->result_array();

    }

    return !empty($result)?$result:false;

   }
}

功能1

$data['files'] = $this->AdminModel->getRows111(assignment_id);

功能2

$data = $this->AdminModel->getRows111($id);

这样做会显示错误

public function getRows111($id='',$assignment_id){
public function getRows111($id='',$assignment_id=""){
        $this->db->select('*');
        $this->db->from('tbl_assignments_files');

        //if assignment_id is not empty it will add where clause to statement
        if($assignment_id != ""){
           $this->db->where('assignment_id',$assignment_id);
        }
       //if id is not empty it will add where clause to statement
        if($id != ""){
            $this->db->where('assignment_file_id',$id);   
        }
      $query = $this->db->get();
      $result = $query->result_array();

        return !empty($result)?$result:false;
    }
}

调用模型函数时,第一个参数是$ id,第二个参数是$ assignment_id

通过$ id调用模型函数

$data = $this->AdminModel->getRows111($id); 

要么

 $data = $this->AdminModel->getRows111($id,''); 

通过$ assignment_id调用函数

$data = $this->AdminModel->getRows111("",$assignment_id);

通过$ id和$ assignment_id调用函数

 $data = $this->AdminModel->getRows111($id,$assignment_id);

希望这可以帮助!

您使用的函数错误,基于function getRows111它确实有2个参数需要$id$assignment_id

正确使用会像这样,

$this->AdminModel->getRows111($id, $assignment_id);

我建议您使它的功能更灵活。

public function getRows111($array){
    $id = $array[0];
    $assignment_id = $array[1];
}

然后使用带有数组参数的函数

$this->AdminModel->getRows111([$id, $assignment_id]);

处理数组,您希望它更加灵活。

public function getRows111($array){
    $id = isset($array['id']) ? $array['id'] : "";
    $assignment_id = isset($array['assignment_id']) ? $array['assignment_id'] : "";
}

像这样调用函数

$this->AdminModel->getRows111(
   ['id' => $id,
    'assignment_id' => $assignment_id
]);

// if you want just the id
$this->AdminModel->getRows111(['id' => $id]);

// or the the assignment id

$this->AdminModel->getRows111(['assignment_id' => $assignment_id]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM