如何使用Codeigniter my_model类为udate多个condetion?

时间:2015-07-08 05:34:55

标签: php mysql codeigniter my-model-jami

我使用codeigniter my_model类来更新我的表数据。

Actulay我需要查询

`UPDATE `pay_project` SET `awarded` = '129' WHERE `pay_id` = 1 and `status` ='y'

为此,我尝试了codeignter my_model function update

$this->pay_project_model->update_by(array('pay_id'=>1,'status'=>'y'),$updateJob);

但代码无法正常工作,如果我正在尝试更新()而不是update_by(),那么它显示为

`UPDATE `pay_project` SET `awarded` = '129' WHERE 'id'=array()

请帮帮我解决这个问题?我也尝试使用update_many(),同样不起作用..

使用的模型是 https://github.com/jamierumbelow/codeigniter-base-model

5 个答案:

答案 0 :(得分:3)

尝试使用此Active Record,它会让您知道自己在做什么以及查询

function update($data = array(), $where = '') {
    $where = array('pay_id'=>1,'status'=>'y');
    $data = array('awarded' => '129');
    $this->db->where($where);
    $res = $this->db->update($this->main_table, $data);
    $rs = $this->db->affected_rows();
    return $rs;
}

答案 1 :(得分:2)

以下是模型函数中需要的查询。

class my_model extends CI_Model {

    function __construct(){
        parent::__construct();
    }

    /*Model function*/
    function update_by($condition = array(),$updateJob=array())
    {
        if($condition && $updateJob)
        {
            $this->db->where($condition);
            $this->db->update('pay_project', $updateJob );
        }

    }
}

现在,您可以将控制器中的现有代码用于所需目的。

$updateJob = ['awarded' => '129'];
$this->pay_project_model->update_by(array('pay_id'=>1,'status'=>'y'), $updateJob);

答案 2 :(得分:2)

使用此codeigniter活动记录进行数据库操作

$data = array(
           'awarded' => '129'
        );
$where = array(
          'pay_id'=>1,
          'status'=>'y'
         );

$this->db->where($where);
$this->db->update('pay_project', $data); 

有关文档,请参阅此链接   codeigniter active records update

答案 3 :(得分:0)

使用此

$query = $this->db->query("UPDATE pay_project SET awarded = '129' WHERE pay_id = '1' and status ='y' ");
$result = $query->result_array();
return $result;

答案 4 :(得分:0)

如果您正在使用Codeigniter My_model类,那么您需要像这样更改模型以使用update_by()函数

class Pay_project_model extends MY_Model {
protected $table='pay_project';
function update_by($where = array(),$data=array())
 {
        $this->db->where($where);
        $query = $this->db->update($this->table,$data);
        return $query;
  }
}

在My_model类中没有默认选项来通过多个where条件更新类,所以你需要编写update_by()函数。简单的复制粘贴你的类中的函数,这将是完美的工作。