2014-04-18 41 views
0

嗨我有一個代碼,我在URL中發送關鍵字,所以當我們點擊鏈接到我們的網站時,我正在檢查什麼關鍵字值在URL即將在我的控制器如何在cakephp代碼中使用Sql的「like」功能

$keyword= $this->params['url']['keyword']; 

$dUsers = $this->Db_user->find(
    'all', 
    array(
     'conditions'=>array('Db_user.area_of_expertise'=>$keyword), 
     'order'=>array('Db_user.last_name'=>'asc') 
    ) 
); 

所以我DATABSE已經keywod值,如:AB AB,BC,CA AB,CD 那麼,什麼是這個在結果發生的只給AB關鍵字,但我需要所有3結果有我的關鍵字在DB 因此,它試圖使它像

'Db_user.area_of_expertise'=>'%keyword%' 

也試過:

Db_user.area_of_expertise'=>'%'.keyword.'%'

之後卻沒有得到結果。

+0

參考不熟悉CakePHP的,但我猜u需要多個'關鍵字'作爲'參數'。爲什麼不簡單地使用OR條件。例如'condition1%keyword%'或'condition2%keyword%'等等。 –

回答

4

條件中的數組只需使用:

'Db_user.area_of_expertise LIKE' => '%'.keyword.'%' 
+1

我還建議閱讀[手冊](http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#complex-find-conditions),或者更好的是,使用[cakeDC搜索插件](https://github.com/CakeDC/search) – arilia

-2

您可以使用查詢方法爲您的自定義查詢發現下面 http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-query

+0

爲什麼在@holt顯示時可以使用'query'?如果你看看你提供的鏈接,你會發現比使用查詢shuold如果不是必要的話可以避免 – arilia

+0

你可以使用任何你想要的。這是做自定義查詢的一種方法,或者像你的情況中的@Holt建議的那樣。 – xiarnousx

+1

'query'應該避免,因爲它不會自動轉義變量,這會強制您添加額外的檢查和函數調用,以手動執行Cake直接爲其他方法提供的內容。 – Holt