在一个文本框中搜索所有属性
Search All Attribute in one textbox
我有一个 table: Email,属性:id, subject, content, to, cc, ...
然后在索引中,只有一个搜索框。我希望这个搜索框可以搜索每个属性中的所有值。
如上图,我们可以通过"To"属性,或"Subject"属性或1个搜索文本框中的其他属性进行搜索。
我应该在控制器中还是在索引视图中编码?
希望大家把代码分享出来,才能完成这个任务。
谢谢你,祝你有美好的一天
知道了。在 Yii、Yii2 中,你可以这样做:
<?php
$model = User::find()
->where('name LIKE :name', [':name' => $search])
->orWhere('email LIKE :email', [':primary_user' => $search])
->orWhere('address LIKE :address', [':address' => $search])
. . .
->all();
另一种方式,
$model = User::find()
->where([
'OR',
['like', 'name', $search],
['like', 'email', $search],
['like', 'address', $search],
])
->all();
在以下字段中过滤搜索值后
如果 $search 变量为空,则 orFilterWhere 函数忽略查询中的该条件
$model = User::find()
$model
->orFilterWhere(['like', 'name', $search])
->orFilterWhere(['like', 'email', $search])
->orFilterWhere(['like', 'address', $search])
->asArray()
->all();
然后在索引中,只有一个搜索框。我希望这个搜索框可以搜索每个属性中的所有值。
如上图,我们可以通过"To"属性,或"Subject"属性或1个搜索文本框中的其他属性进行搜索。
我应该在控制器中还是在索引视图中编码?
希望大家把代码分享出来,才能完成这个任务。
谢谢你,祝你有美好的一天
知道了。在 Yii、Yii2 中,你可以这样做:
<?php
$model = User::find()
->where('name LIKE :name', [':name' => $search])
->orWhere('email LIKE :email', [':primary_user' => $search])
->orWhere('address LIKE :address', [':address' => $search])
. . .
->all();
另一种方式,
$model = User::find()
->where([
'OR',
['like', 'name', $search],
['like', 'email', $search],
['like', 'address', $search],
])
->all();
在以下字段中过滤搜索值后 如果 $search 变量为空,则 orFilterWhere 函数忽略查询中的该条件
$model = User::find()
$model
->orFilterWhere(['like', 'name', $search])
->orFilterWhere(['like', 'email', $search])
->orFilterWhere(['like', 'address', $search])
->asArray()
->all();