貝殼 发表于 2012-6-8 21:45:19

AR类能不能实现这样的UPDATE语句,还是要逼我用query了

我要的UPDATE语句
UPDATE `pre_credits` SET `user_name` = '贝壳测试帐号', `user_credits` = user_credits+5

Credits_model.php

        function MinusCredit($username)
                {
        $query=$this->db->query("SELECT * FROM `pre_credits` WHERE `user_name` LIKE '$username' AND `user_credits` >= 3");
        if($query->num_rows() > 0)
        {
                $data = array(
      'user_name' => $username ,
      'user_credits' => user_credits-3
         );
                $this->db->update('pre_credits', $data);
        return 1;
        } else {
        return -1;
        }
                }

Question.php(Contrller)

                if(@$data['user_name']!=null){
                $this->load->model('Credits_model');
                $this->load->database();
                $tmp=$this->Credits_model->MinusCredit($data['user_name']);
                if(@$tmp!=-1){
                echo '金币-3';
                } else {
                echo '金币不足,无法操作!';
                }
                }

万能的AR类真的这样倒在一个小小的SQL运算了吗,反正我是不信{:soso_e130:}

jeongee 发表于 2012-6-8 22:02:05

->set('user_credits', 'user_credits+5', FALSE)->xxxxxxxxxxxxxxxxxxx
仔细看手册

貝殼 发表于 2012-6-8 22:05:22

jeongee 发表于 2012-6-8 22:02 static/image/common/back.gif
->set('user_credits', 'user_credits+5', FALSE)->xxxxxxxxxxxxxxxxxxx
仔细看手册

真心木有看到,能看的都看了

whosheng 发表于 2012-6-10 10:41:38

自定义 key/value 方法:
你可以在第一个参数中包含一个运算符,以便控制比较:
$this->db->where('name !=', $name);
$this->db->where('id <', $id);
// 生成: WHERE name != 'Joe' AND id < 45

希望你仔细看下$this->db->where();http://codeigniter.org.cn/user_guide/database/active_record.html#update :D

貝殼 发表于 2012-6-10 11:50:01

whosheng 发表于 2012-6-10 10:41 static/image/common/back.gif
自定义 key/value 方法:
你可以在第一个参数中包含一个运算符,以便控制比较:
$this->db->where('name !=', ...

當初貌似寫Query的時候少個Where,直接SET,下場你懂得
页: [1]
查看完整版本: AR类能不能实现这样的UPDATE语句,还是要逼我用query了