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;'
)
));
?>
このウィジェットを使用して、availability_start_date が上記のウィジェットで指定された値から +/- 2 日であるユーザーを検索する必要があります。
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 句のロジックは、availability_start_date がウィジェットの値以上である一致を求めるだけです。
上記の 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)';
}
残念ながら、ロジックをテストすると、この基準を満たさないレコードが返されます。フォームまたはページでエラーはスローされません。