我写了一个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就不起作用呢,恳请高人指点。