我可以使用andFilterWhere([])来搜索以?开头的所有值吗?

时间:2015-12-03 01:36:53

标签: yii2

我正在使用yii2框架和GridView,只是学习yii2

我可以使用andFilterWhere([])搜索以?开头的所有值吗?一个类似于SQL的特定值,你可以使用zip%,或者有一些更好的功能可以使用。

我想在数据库中搜索一个以我输入的数字开头的邮政编码。

我最初使用

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

但是搜索任何可能的组合。

2 个答案:

答案 0 :(得分:3)

是的,你可以。它通过将false作为第4个数组元素传递来完成:

['like', 'zip', 'zip%', false],

或者,如果它取决于模型属性值:

['like', 'zip', $this->zip . '%', false],

请详细了解如何构建查询here的部分,有关此案例的例子:

  

like:操作数1应该是列或DB表达式,操作数2   是一个字符串或表示列或DB的值的数组   表达应该是这样的。例如,['like', 'name', 'tester']   将生成name LIKE '%tester%'。当值范围给定为   一个数组,将生成多个LIKE谓词并连接   使用AND。例如,['like', 'name', ['test', 'sample']]会   生成名称LIKE '%test%' AND name LIKE '%sample%'。方法   将正确引用列名称并转义特殊字符   价值。有时,您可能想要添加百分比字符   对于匹配值,您可以提供第三个操作数   这样做是假的。例如,['like', 'name', '%tester', false]会   生成name LIKE '%tester'

答案 1 :(得分:1)

尝试andFilterWhere as: -

->andFilterWhere(['like', 'zip', $this->zip.'%' ,false]);

它会创建查询where zip like 'zipcode%'