Многоколоночный поиск в Yii CGridView

У меня есть страница администратора, содержащая CGridView и связанная с пользовательской базой данных, мне нужно, чтобы поиск в CGridView работал по многостолбцовой системе, а не только по одному .. вот так:

Мне нужно найти информацию о пользователе по номеру телефона ИЛИ имени пользователя ИЛИ адресу электронной почты, возможно ли это? и мой код находится под изображением:

введите описание изображения здесь

Код

Модель пользователя:
Я использовал ИЛИ, но это не работает .. Я все еще ищу только по имени!

public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.

$criteria=new CDbCriteria;

$criteria->compare('id',$this->id);
$criteria->compare('full_name',$this->full_name,'OR');
$criteria->compare('full_name',$this->landline,'OR');
$criteria->compare('full_name',$this->mobile_number,'OR');
$criteria->compare('email_address',$this->email_address,true);
$criteria->compare('city',$this->city,true);return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'id DESC',
)
));
}

1

Решение

Вы сделали небольшие ошибки, сравнивая

$criteria->compare('full_name', $this->full_name, true, 'OR');
$criteria->compare('landline', $this->full_name, true, 'OR');
$criteria->compare('mobile_number', $this->full_name, true, 'OR');

Первый параметр — это поле в базе данных, а второй — это то, что вы заполнили в форме.
Вы также пропустили третий параметр, который разрешает частичное соответствие.
И четвертый параметр должен быть «ИЛИ»

Имейте в виду, что это обходной путь, и он может вызвать некоторые головные боли позже, если вы не будете осторожны, потому что вы храните landline а также mobile_phone в $model->full_name,

Я бы предложил вам добавить еще одно свойство в режим пользователя, что-то вроде user_info и затем использовать это свойство для хранения ввода из запроса и сравнения его с базой данных.

Пример из приведенного выше будет работать, если вы хотите улучшить свой код с помощью дополнительного параметра, и вы не можете найти выход с ним, я объясню это лучше, просто кричите.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector