2011-05-05 92 views
1

您好,我有一個小功能,我用它來搜索用戶的詳細信息(它的ajax搜索)。目前我使用的功能是這樣的:Zend DB連接兩列

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_nameORlast_nameORusername我能找到他們的詳細資料。

我希望能夠做的是微調多一點搜索,所以如果我要寫first_name last_name它會很好地調整結果。

我發現了幾個問題,看起來像他們將工作(see here),如果我從一個表中獲取數據,但我不知道如何將這與使用連接,但堅持使用Zend語法比使用普通的舊SQL語句?

回答

0

行,所以答案是簡單了很多,比我還以爲,我一直都搞亂上午試圖找到可能過度複雜的解決方案,提出的問題,並走了,漸漸明白了我的嘗試:

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

這適用於我,我不確定它的正確方法,但它的工作原理,所以我會把它留在這裏,以防其他人幫助。