PHP多次调用model方法,并在CodeIgCenter中使用不同的参数值

PHP多次调用model方法,并在CodeIgCenter中使用不同的参数值,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我在模型中创建了一个方法,从数据库中获取数据,然后使用不同的方法参数($param)值在控制器中多次调用它。这只适用于一个参数值,其中一个先出现。我知道我做得不对,但我找不到解决办法。请帮忙 事实上,我正在尝试根据他们的类型(“wordpress”、“magento”、“shopify”)表单数据库进行分类 My_model.php class My_model extends CI_Model{ public function fun_name($param){ retur

我在模型中创建了一个方法,从数据库中获取数据,然后使用不同的方法参数($param)值在控制器中多次调用它。这只适用于一个参数值,其中一个先出现。我知道我做得不对,但我找不到解决办法。请帮忙


事实上,我正在尝试根据他们的类型(“wordpress”、“magento”、“shopify”)表单数据库进行分类

My_model.php

class My_model extends CI_Model{

  public function fun_name($param){
       return $this->db->get_where('categories', array('type' => '$param'));
  }

}
My_controller.php

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $data = array(
           'first'   =>   $this->my_model->fun_name('wordpress'),
           'second'  =>   $this->my_model->fun_name('magento'),
           'third'   =>   $this->my_model->fun_name('shopify')
        );
       $this->load->view('index', $data);
   }
}

如果这是你的实际代码

class My_model extends CI_Model{
  public function fun_name($param){
    if($param = one){
       return $this->db->get_where('table', array('id' => '$param'));
    }
  }
}
那么问题就在下面这一行:

    if($param = one){
换成

    if($param == 'one'){

在这个

return $this->db->get_where('table', array('id' => '$param'));
将其更改为下面的这一行,因为您不需要在变量周围加引号

return $this->db->get_where('table', array('id' => $param));

显然,您的代码可以得到更好的优化,也就是说,您可能不需要if-else方法,但在不了解整个场景的情况下,推荐解决方案并不容易。

如果这是您的实际代码

class My_model extends CI_Model{
  public function fun_name($param){
    if($param = one){
       return $this->db->get_where('table', array('id' => '$param'));
    }
  }
}
那么问题就在下面这一行:

    if($param = one){
换成

    if($param == 'one'){

在这个

return $this->db->get_where('table', array('id' => '$param'));
将其更改为下面的这一行,因为您不需要在变量周围加引号

return $this->db->get_where('table', array('id' => $param));

显然,您的代码可以得到更好的优化,也就是说,您可能不需要if-else方法,但在不了解整个场景的情况下,推荐解决方案并不容易。

如果您希望使用一个查询从同一个表中选择不同的ID,则可以执行以下操作:

型号:

class My_model extends CI_Model{

  public function fun_name($params){
    $this->db->where_in('id', $params);
    return $this->db->get('table');
  }
}
控制器:

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $params = array('first', 'sec', 'third');
       $data['values'] = $this->my_model->fun_name($params);

       $this->load->view('index', $data);
   }
}
您还可以查看Codeigniter文档:

如果要使用一个查询从同一个表中选择不同的ID,则可以执行以下操作:

型号:

class My_model extends CI_Model{

  public function fun_name($params){
    $this->db->where_in('id', $params);
    return $this->db->get('table');
  }
}
控制器:

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $params = array('first', 'sec', 'third');
       $data['values'] = $this->my_model->fun_name($params);

       $this->load->view('index', $data);
   }
}
您还可以查看Codeigniter文档: 换衣服怎么样

if($param = 'one'){

换衣服怎么样

if($param = 'one'){

你能试试吗

你的控制器

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $data['data'] = array(
           'first'   =>   $this->my_model->fun_name('param1'),
           'second'  =>   $this->my_model->fun_name('param2'),
           'third'   =>   $this->my_model->fun_name('param3')
        );
       $this->load->view('index', $data);
   }
}
模型

看法


身份证件
名称
类型
你能试试吗

你的控制器

class My_controller extends CI_Controller{
   public function get_data(){
       $this->load->model('my_model');
       $data['data'] = array(
           'first'   =>   $this->my_model->fun_name('param1'),
           'second'  =>   $this->my_model->fun_name('param2'),
           'third'   =>   $this->my_model->fun_name('param3')
        );
       $this->load->view('index', $data);
   }
}
模型

看法


身份证件
名称
类型


你能帮我打印($data)吗?这是你正在执行的实际代码吗?我假设你只是在“测试”一些原理。在您的模型上使用具有固定值的条件,就目前而言,不是很有用。对不起,伙计们,模型中的条件如果($param=one){},我就错了。这不是实际的代码,但问题是我想要所有三个'first'=>$This->my_model->fun_name('first'),'second'=>$This->$my_model->fun_name('second'),'third'=>$This->$my_model->fun_name('third')的值。事实上,我正试图根据它们的类型建立分类('wordpress','magento','shopslick')表单数据库你能帮我打印($data)吗?这是你正在执行的实际代码吗?我假设你只是在这里“测试”一些原则。在你的模型上使用一个固定值的条件,就目前而言,不是很有用。对不起,伙计们,模型中的条件if($param=one){},我错了。这不是实际的代码,但问题是我想要所有三个'first'=>This->my_model->fun_name('first'),'second'=>This->my_model->fun_name('second'),'third'=>This->my_model->fun_name('third')实际上,我正试图根据它们的类型来划分类别('wordpress'、'magento'、'Shopsick')表单数据库如果($param='one'){为什么要这样做?您正在将'one'赋值给$param。要进行比较,您需要==,即如果($param=='one')){这是我想纠正的错误。现在更新。整个IF语句甚至都不是必需的。在那里没有任何意义。我不知道。一步一个脚印。如果OP问他是否正在试图摆脱iFs,我可以看看其他替代方案options@TimBrownlaw你在这个男人身上真的很好,每个人都试图解决我的打字错误如果($param='one'){您正在将'one'赋值给$param。要进行比较,您需要==,即如果($param=='one')){这是我想纠正的错误。现在更新。整个IF语句甚至都不是必需的。在那里没有任何意义。我不知道。一步一个脚印。如果OP问他是否正在试图摆脱iFs,我可以看看其他替代方案options@TimBrownlaw你在这个男人身上真的很好,每个人都试图解决我的打字错误我发现它甚至不需要抱歉,模型中的条件if($param=one){},我错了。这不是实际的代码,但问题是我想要所有三个'first'=>$This->my_model->fun_name('first'),'second'=>$This->my_model->fun_name('sec')的值,this'=>$this->my_model->fun_name('third')实际上,我正试图根据它们的类型('wordpress','magento','shopslick')表单数据库创建类别对不起,模型中的条件if($param=one){},我错了。这不是实际的代码,但问题是我想要所有三个'first'=>This->my_model->fun_name('first'),'second'=>This->my_model->fun_name('second'),'third'=>This->my_model->fun_name('third')实际上,我正试图根据它们的类型来划分类别('wordpress'、'magento'、'shopslick')表单数据库抱歉,模型中的条件如果($param=one){},我错了。这不是实际的代码,但问题是我想要所有三个'first'=>$This->my_model->fun_name('first')、'second'=>$This->my_model->fun name('sec')的值,this'=>$this->my_model->fun_name('third')事实上,我正试图根据它们的类型('wordpress','magento','shopslick')表单数据库创建类别对不起,模型中的条件if($param=one)