我正在使用yii2框架和GridView,只是学习yii2
我可以使用andFilterWhere([])搜索以?开头的所有值吗?一个类似于SQL的特定值,你可以使用zip%,或者有一些更好的功能可以使用。
我想在数据库中搜索一个以我输入的数字开头的邮政编码。
我最初使用
->andFilterWhere(['like', 'zip', $this->zip])
但是搜索任何可能的组合。
答案 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%'