2010-12-23 116 views
0

我有3種型號:自動完成,搜索多個數據庫表/字段 - Symfony的

文章[姓名,職務]

照片[名稱,描述]

視頻[名稱,描述,轉錄]

現在,我想創建一個自動完成搜索,它將在輸入字段中搜索每個模型和db字段以匹配字符串。

是否可以對這3個表格進行搜索?

如果是這樣,我該怎麼辦呢?

回答

0

我想你的使用推進。

它絕對有可能做到這一點,但如果這些表不與任何可能導致一些凌亂的代碼保存時相關。但是,如果你確實需要這些表中進行搜索,我的做法是創建像一個動作:

public function executeAutocomplete(sfWebRequest $request) 
{ 
    $q = $request->getParameter('q');//The value to be searched 
    $limit = $request->getParameter('limit');//Not completly necessary but recommendable 
    if(count($q) == 0) 
    { 
    return sfView::NONE;//With no input, no search 
    } 

    $results = array('article' => array(), 'photo' => array(), 'video' => array()); 

    $article_search = ArticlePeer::search($q,$limit); 
    $photo_search = PhotoPeer::search($q,$limit); 
    $video_search = VideoPeer::search($q,$limit); 

    $this->process_search($results,$article_search,$photo_search,$video_search); 
    //Process those three arrays to fit your need 

    return $this->renderText(json_encode($result)); 
} 

現在,在同行類的搜索功能看起來是這樣的:

ArticlePeer >>

public static function search($q,$limit = null) 
{ 
$c = new Criteria(); 
$c->add(self::NAME,'%'.$q.'%',Criteria::LIKE); 
if(!is_null($limit)) 
{ 
    $c->addLimit($limit); 
} 
return self::doSelect($c); 
} 

終於至於小部件,我已經使用和改編sfWidgetJQueryAutocomplete,它的工作很不錯,所以你應該檢查出來。

編輯:嵌入式搜索字段si創建sfForm智能我之前提到的jQuery小部件的簡短方法,並將配置和js留給小部件。你必須找到一種方法來處理搜索結果。 嗯,我希望這對你有幫助!

+0

哇,這太好了!我將在我的layout.php中使用搜索功能作爲輸入字段 - 我將如何使用sfWidgetJQueryAutocomplete這樣做? – terrid25 2010-12-23 16:56:54