我在数据库中有如下记录:
RES_ID | RES_CHECK_IN | RES_CHECK_OUT
----------------------------------------
1685 | 08/10/2015 | 12/10/2015
1684 | 24/10/2015 | 28/10/2015
1683 | 20/09/2015 | 22/09/2015
105 | 03/04/2015 | 06/04/2015
我只想更新RES ID
105,因为今天的日期(01/10/2015)
比CHECK OUT DATE of RES ID 105
大。我试着这样做:
模型:
function update_columns_lock($res_id)
{
$data = array('IS_COLUMNS_LOCKED_AFTER_CHECKOUT' => 1);
$this->db->where('RES_ID' ,$res_id);
$this->db->update('reservations',$data);
}
和执行:
$today = time();
if ($today > strtotime($row->RES_CHECK_OUT)) {
$ci = &get_instance();
$ci->Reservations_model->update_columns_unlock($row->RES_ID);
}
似乎只是随机更新预订…不是我想要的逻辑。我在这里错过了什么?
尝试以下代码:
if (strtotime(date()) > strtotime($row->RES_CHECK_OUT)) {
$ci = &get_instance();
$ci->Reservations_model->update_columns_unlock($row->RES_ID);
}
我认为这是你的日期格式的问题。下面的代码应该可以帮助您,因为它创建了一个strtotime可以理解的格式。
$tmp_convert_time = date_create_from_format("d/m/Y",$row->RES_CHECK_OUT);
if ($today > strtotime(date_format($tmp_convert_time, 'd/m/Y'))) {
<CODE HERE>
}
我的解决方案:
function lock_columns_after_checkout()
{
$custom_sql_command = 'UPDATE reservations SET IS_COLUMNS_LOCKED_AFTER_CHECKOUT = 1 WHERE DATE(RES_CHECK_OUT) < DATE(NOW())';
$this->db->query($custom_sql_command);
}