您好我有一个小功能,用于搜索用户详细信息(它的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语句?
答案 0 :(得分:0)
好的,所以答案比我想象的要简单得多,我整个上午一直在弄乱,试图找到一个过于复杂的解决方案,问问题然后消失了,我突然想到尝试:
->orWhere('CONCAT(users_data.first_name, " ", users_data.last_name) LIKE ?', '%'.strip_tags($like).'%')
这对我有用,我不确定它是正确的方法,但它确实有效,所以我会留在这里,以防它帮助其他人。