我们正在使用 Yii 框架并创建了一个搜索表单以包含以下 DatePicker 组件:
<?php echo $form->labelEx($model, 'availability_start_date');?>
<?php
Yii::import('zii.widgets.jui.CJuiDatePicker');
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'name'=>'stattDate',
'options'=>array(
'showAnim'=>'fold',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
)
));
?>
需要使用此小部件来搜索与上述小部件中指定的值相差 +/- 2 天的availability_start_date 的用户。
我们的 UserController 有以下连接逻辑:
if ($search_frm['availability_start_date']){
$join .= ' LEFT JOIN user_availability_start_date usd on u.id = usd.id';
$where .= 'AND usd.availability_start_date >= '.$search_frm
['availability_start_date'];
}
目前,WHERE 子句中的逻辑只要求匹配可用性开始日期大于或等于小部件的值。
如何修改上述 WHERE 子句以选择小部件值与 availability_start_date 值相差 +/- 2 天的那些记录?
更新:我已将 where 子句修改为如下:
if ($search_frm['availability_start_date']){
$join .= ' LEFT JOIN user_availability_start_date usd on u.id = usd.id';
$where .= ' AND usd.availability_start_date >= DATE_ADD('.$search_frm.',
INTERVAL -2 DAY)
AND usd.availability_start_date <= DATE_ADD(' .$search_frm.', INTERVAL 2 DAY)';
}
不幸的是,当我测试逻辑时,返回的记录不符合此条件。在表单或页面上不会引发错误。