Zend DB объединяет две колонки - PullRequest
1 голос
/ 05 мая 2011

Здравствуйте, у меня есть небольшая функция, которую я использую для поиска информации о пользователях (это поиск ajax) . На данный момент я использую следующую функцию:

public function findAllUsersLike($like)
{
    $select = $this->select(Zend_Db_Table::SELECT_WITH_FROM_PART)->setIntegrityCheck(false);
    $select->where('users_table.username LIKE ?', '%'.strip_tags($like).'%')
           ->orWhere('users_data.first_name LIKE ?', '%'.strip_tags($like).'%')
           ->orWhere('users_data.last_name LIKE ?', '%'.strip_tags($like).'%')
           ->join('users_data', 'users_table.id = user_id', array('first_name', 'last_name'));
    return $this->fetchAll($select);
}

Как видите, если бы я писал пользователям first_name ИЛИ last_name ИЛИ username Я могу найти их детали.

То, что я хочу сделать, - это точная настройка поиска, поэтому, если бы я написал first_name last_name, это точно настроило бы результаты.

Я нашел пару вопросов, которые выглядят так, как будто они будут работать (см. Здесь) , если бы я получал данные из одной таблицы, но я не уверен, как объединить это с использованием объединения, но придерживаясь синтаксиса Zend, а не используя простой старый оператор SQL?

1 Ответ

0 голосов
/ 05 мая 2011

Хорошо, так что ответ был намного проще, чем я думал, я все утро бездельничал, пытаясь найти, возможно, слишком сложное решение, задал вопрос и ушел, и мне пришло в голову попробовать:

->orWhere('CONCAT(users_data.first_name, " ", users_data.last_name) LIKE ?', '%'.strip_tags($like).'%')

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

...