【求助】Yii2 Andfilterwhere Between 不执行的问题

我写了一个kartik GridView的DEMO,现在我想通过filter来过滤数据,其中一个特殊的要求是想要通过一个时间范围来过滤,所以有如下代码:


$query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])

  ->andFilterWhere(['between', 'CREATED_AT', $this->START_AT, $this->END_AT]);

输入值ORG_CODE=1,START_AT=2014-01-01,END_AT=2014-01-31

希望得到的SQL:


SELECT * FROM XXX_TABLE WHERE ORG_CODE LIKE %1% AND (CREATED_AT BETWEEN '2014-01-01' AND '2014-01-31')

但是每次只生成:


SELECT * FROM XXX_TABLE WHERE ORG_CODE LIKE %1%

非常奇怪,但我如果把


$query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])

  ->andFilterWhere(['between', 'CREATED_AT', $this->START_AT, $this->END_AT]);

修改成


$query->andFilterWhere(['like', 'ORG_CODE', $this->ORG_CODE])

  ->andFilterWhere(['and', 'CREATED_AT', $this->START_AT, $this->END_AT]);

又能生成如下代码:


SELECT * FROM XXX_TABLE WHERE ORG_CODE LIKE %1% AND ((CREATED_AT) AND ('2014-01-01') AND ('2014-01-31'))

可是为什么between就不起作用呢,恳请高人指点。

追加一句,如果把andFilterWhere换成andWhere

between又可以正常解析,这又是为什么呢?