как использовать плагин cakedc/search для поиска по 3 разным таблицам с 1 строкой поиска?

Я использую CakePHP2.4 и поисковый плагин https://github.com/CakeDC/search.

у меня есть следующее

Employee hasOne EmployeeProfile 
Employee hasMany Qualification

Так что у меня есть одна строка поиска.

панель поиска будет искать с помощью НРАВИТСЯ по следующим полям

Employee.name
EmployeeProfile.email
Qualification.title

как настроить модель Employee->filterArgs для этого поиска?

Это кросс-постинг оригинальной проблемы здесь


person Kim Stacks    schedule 28.07.2013    source источник
comment
Я бы сказал: пользовательская bindModel (как hasOne) для отношения hasMany (квалификация) и 'field' => array(all, my, fields) - или разбиение на страницы записей hasMany.   -  person mark    schedule 28.07.2013


Ответы (2)


В документации есть пример.

'username' => array('type' => 'like', 'field' => array('User.username', 'UserInfo.first_name')),

Вам просто нужно убедиться, что модели, которые вы вызываете, доступны в вашем вызове find(). В этом примере при поиске будет отображаться имя пользователя в таблице пользователей и поле user_infos first_name одновременно.

person floriank    schedule 11.08.2013

Я хотел бы расширить это, так как я пытался настроить поиск отношения hasMany в течение нескольких часов и ничего не мог найти. Марк упомянул «пользовательскую модель привязки (как hasOne) для отношения hasMany (квалификация)». Вот как это делается:

    $this->Employee->bindModel(array(
        'hasOne' => array(
            'Qualification' => array(
                'foreignKey' => false,
                'conditions' => array('Employee.id = Qualification.employee_id')
            )
        )
    ), false);

Просто привяжите его перед разбиением на страницы и добавьте Qualification.title в свой список полей в filterArgs.

person Dominic Horbas    schedule 19.05.2015