我有以下函数检查以确保输入的代码与数据库中的代码匹配。
如果是,它会向用户添加一个信用,并从相应的行中减去一个。
else if ($code_enter != NULL){
$code_check = $this->CI->db->select('code')->from('be_coupons')->where('code', $code_enter)->limit(1)->get();
$credits_list = $this->CI->db->select('*')->from('be_coupons')->where('code', $code_enter)->limit(1)->get();
if ($code_check->row() && $credits_list->row()->credits > 0){
$data['credits'] = ($this->CI->db->select('credits')->where('user_id', $id)->get('be_user_profiles')->row()->credits + 1);
$datas['credits'] = ($this->CI->db->select('credits')->where('code', $code_enter)->get('be_coupons')->row()->credits - 1);
$this->CI->db->update('be_coupons', $datas, array('code' => $code_enter));
$this->CI->home_model->update('UserProfiles',$data, array('user_id' => $id));
flashMsg('success',"WOOT");
redirect('home','location');
}
else if ($code_check->row() && $credits_list->row()->credits < 0){
flashMsg('warning','The code you entered is no longer valid.');
redirect('home/addCredit','location');
}
else{
flashMsg('warning','The code you entered is not valid. Check your entry and try again.');
redirect('home/addCredit','location');
}
}
这段代码有效,但我相信我是多余的。你能简化一下,让它更优雅吗?谢谢!
答案 0 :(得分:0)
你能为这些创建功能并在你的功能中调用它们吗?
function somename(){$this->CI->db->select('code')->from('be_coupons')->where('code', $code_enter)->limit(1)->get();
返回数据;}
function othername(){
$credits_list = $this->CI->db->select('*')->from('be_coupons')->where('code', $code_enter)->limit(1)->get();
return data;}
function again anotherone(){
($this->CI->db->select('credits')->where('user_id', $id)->get('be_user_profiles')->row()->credits + 1);
}
etc.
然后在你的功能中,
else if ($code_enter != NULL){
$code_check = $this->somename();
$credits_list = $this->othername();
if (
...
答案 1 :(得分:0)
shin是正确的,这个db工作应该在模型中完成。
通过减少语法和内联更新,您可以提高效率。
你可以这样做,而不是只计算一件事,你可以做到:
$check = $this->CI->db->where('code', $code_enter)->count_all_results('be_coupons') > 0; // bool true/false
而不是提取数字,在PHP中增加并更新,只需执行以下操作:
$this->db->set('field', 'field + 1', FALSE);
$this->db->update('table');
FALSE非常重要,否则它会将第二个参数视为一个字段并将其转义为:
SET field =“field + 1”。