2013-05-23 3 views
0

Я использую плагин поиска cakeDC для cakephp, и мне нужно искать по имени. Я сохранил имя в базе данных как отдельные имена и фамилии. Как бы я совпадал с именем и фамилией, а затем выполнял мой поиск.cakeDC поиск по конкатентным полям

Таким образом, мой ввод формы будет искать номер члена или полное имя.

CakePHP версия 2.3.5

public $filterArgs = array(
    'member_no' => array(
     'type' => 'like' , 
     'field' => array(
      'member_no', 
      'name' 
     ) 
    ) 
); 

Update:

Вот что это будет выглядеть как SQL-запрос:

SELECT 
    CONCAT_WS(' ', firstName,lastName) AS name 
FROM 
    table 
WHERE 
    name LIKE '%$keywords%' 

Благодаря Марк здесь что я добавил к модели. Все отлично работает сейчас.

public $virtualFields = array(
    'name' => 'CONCAT(Member.first_name, " ", Member.last_name)' 
); 

ответ

0

Если вы просто хотите пример выше в чистом виде, почему не используя плагин как описано? позволяя ему выполнять всю работу?

public $virtualFields = array(
    'full_name' => 'CONCAT_WS(' ', firstName,lastName)' 
); 
public $filterArgs = array(
    'search' => array(
     'type' => 'like' , 
     'field' => 'full_name' 
    ) 
); 

Это все, что с ним связано. Или в чем проблема?

+0

У меня было это да, и я действительно работаю, но поскольку мне действительно нужно искать имя first_name и last_name, я использовал вышеизложенное, думая, что я могу как-то совместить их вместе. –

+0

Комбинированный? Как? У вас есть только одно значение «поиска», верно? Итак, его «first_name OR last_name», а не оба. – mark

+0

поисковым термином будет полное имя: пример «Keith Power», затем поля базы данных first_name (keith) и last_name (power) объединяются, а соответствие –

Смежные вопросы