2015-12-03 98 views
0

我正在使用yii2框架和GridView,只是学习yii2我可以使用andFilterWhere([])搜索以?开头的所有值吗?

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

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

我最初使用

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

但搜索任何可能的组合。

回答

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%'。方法 将正确引用列名称并跳转 中的特殊字符的值。有时,您可能想要自行将百分号字符 添加到匹配值中,您可以提供第三个操作数 为false。例如,['like', 'name', '%tester', false]将 生成name LIKE '%tester'

1

尝试andFilterWhere为: -

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

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

相关问题