Codeigniter 活动记录更新查询以有条件地增加列值

问题描述 投票:0回答:3

如果更新请求中某个字段不为空,我尝试将 INT 列增加 1,目前我也有此更新列,

public function updateCronDetails($transaction_reference, $flag, $log) {
    $data = array (
        'flag' => $flag,
        'log' => "$log"
    );

    $this->db->where('transaction_reference', $transaction_reference);
    $this->db->update('sy_cron', $data);
}

我需要知道的是如何检查发送到日志字段的值是否为 NULL,如果是,我如何将名为 count 的列增加 1?

php mysql codeigniter activerecord increment
3个回答
1
投票

尝试使用这个:

$this->db->set('field', 'field+1', FALSE);

0
投票
public function updateCronDetails($transaction_reference, $flag, $log = NULL)
{    
    // Only increment this field if not null
    is_null($log) || $this->db->set('field', 'field+1', FALSE);

    $this->db
        ->set('flag', $flag)
        ->set('log', $log)
        ->where('transaction_reference', $transaction_reference)
        ->update('sy_cron', $data)
}

0
投票

如何使用三元运算符,即

public function updateCronDetails($transaction_reference, $flag, $log) {
    $data = array (
        'flag' => $flag,
        'log' => (is_null($log))? 1 : $log,
    );

    $this->db->where('transaction_reference', $transaction_reference);
    $this->db->update('sy_cron', $data);
}

如果它为空,那么该值就需要是?

© www.soinside.com 2019 - 2024. All rights reserved.