Yii2:使用一个字段搜索多列

时间:2018-03-03 20:16:32

标签: php yii2

我有一个名为calls的表,我需要一个搜索输入,才能搜索两列,contact_numbercontact_name。 我如何在Yii2上执行此操作?

_search.php

$form->field($model, 'searchstring')->textInput(['placeholder' => 'Search']); 

common\models\CallsSearch.php

[['searchstring'], 'safe']

(..)

$query->orFilterWhere(['like', 'searchstring', $this->contact_name])
   ->orFilterWhere(['like', 'searchstring', $this->contact_number]);

controllers\CallsController.php

public function actionIndex()
{
    $searchModel = new CallsSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
}

1 个答案:

答案 0 :(得分:3)

您是否尝试使用search_string输入来过滤2个字段contact_namecontact_number,但您没有使用它来与字段进行比较,而是指定自定义模型属性如table_column,这是错误的,您应该将搜索模型代码更改为以下

 $query->andFilterWhere ( [ 'OR' ,
            [ 'like' , 'contact_name' , $this->search_string ],
            [ 'like' , 'contact_number' , $this->search_string ],
        ] );

希望它有所帮助。