yii addBetweenCondition在范围内与外部范围

时间:2015-09-15 10:13:57

标签: php yii

我对yii addBetweenCondition提出了一些问题。

我使用了这段代码

$criteria->addBetweenCondition('date',$this->date1,$this->date2,true);

让我们说$this->date1 = '2015-09-15'$this->date2 = '2015-09-17'

但结果会显示1517之间的日期为16的记录, 我想要的是15,16,17。 如何在yii中执行此操作。 谢谢 的 修改 我忘了说我在模特身上使用它

function search()

3 个答案:

答案 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)

可能有两件事情。

  1. 检查您使用的是findAll()方法;或者使用此标准查询数据库的某种方法变体。
  2. 如果您需要日期151617 ...,您可以考虑在1418之间询问日期 - - 这是假设MySQL BETWEEN不具有包容性。