Zend DB连接两列

时间:2011-05-05 10:47:47

标签: php zend-framework search zend-db

您好我有一个小功能,用于搜索用户详细信息(它的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,它会对结果进行微调。

如果我从一个表中获取数据,我发现了几个问题,看起来它们会工作(see here),但我不知道如何将其与使用连接相结合但坚持使用Zend语法而不是使用普通的旧SQL语句?

1 个答案:

答案 0 :(得分:0)

好的,所以答案比我想象的要简单得多,我整个上午一直在弄乱,试图找到一个过于复杂的解决方案,问问题然后消失了,我突然想到尝试:

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

这对我有用,我不确定它是正确的方法,但它确实有效,所以我会留在这里,以防它帮助其他人。