我对yii addBetweenCondition
提出了一些问题。
我使用了这段代码
$criteria->addBetweenCondition('date',$this->date1,$this->date2,true);
让我们说$this->date1 = '2015-09-15'
和
$this->date2 = '2015-09-17'
但结果会显示15
和17
之间的日期为16
的记录,
我想要的是15,16,17
。
如何在yii
中执行此操作。
谢谢
的 修改
我忘了说我在模特身上使用它
function search()
答案 0 :(得分:4)
您可以根据您的要求使用此条件。并始终绑定参数以防止查询中的sql注入。
$criteria->addCondition('date >= :startDate AND date <= :endDate');
$criteria->params = array(':startDate' => $this->date1, ':endDate' => $this->date2);
答案 1 :(得分:0)
你可以试试这个:
$criteria->condition = "date >= '$this->date1' AND date <= '$this->date2'";
,或者
//use this if you are expecting null in any of $this->date1 or $this->date2
if ($this->date1 != null) {
$criteria->addCondition("date >= :from");
$criteria->params['from']=$this->date1;
}
if ($this->date2 != null) {
$criteria->addCondition("date <= :to");
$criteria->params['to'] = $this->date2;
}
我认为您的date
字段有一个时间组件可能是addBetweenCondition
未返回预期结果的原因。
答案 2 :(得分:0)
可能有两件事情。
findAll()
方法;或者使用此标准查询数据库的某种方法变体。15
,16
和17
...,您可以考虑在14
和18
之间询问日期 - - 这是假设MySQL BETWEEN
不具有包容性。