2014-09-22 112 views
0

我試圖返回一個mysql字段,該字段在返回給Cake之前已應用mysql REPLACE函數。我實際上是試圖從字段中刪除文本,如果它匹配我的變量。cakephp在mysql字段列表中使用計算字段

理論上裏面找,我想:

'fields' => array('REPLACE(E.title, "'.$data['Make']['name'].'", "") AS E.title', ...) 

我該怎麼辦呢?

感謝

+0

..以及當您嘗試此操作時會發生什麼?你有錯誤嗎? – AgRizzo 2014-09-22 12:17:31

+0

我很嗅聞SQL注入漏洞。請使用[**'DboSource :: value()**](http://api.cakephp.org/2.5/class-DboSource.html#_value)正確引用輸入! – ndm 2014-09-22 13:51:55

回答

1

嘗試使用使用Virtual Fields模型中的

class ModelName extends AppModel { 
    public $virtualFields = array(
     "my_virtual_field_title" => "REPLACE(yourfield,'OLD STR','NEW STR')" 
    ); 
} 

$your_query= $this->ModelName->find('first'); 
echo $your_query['ModelName']['my_virtual_field_title']; 

,或者你可以直接設置virtualfields:

$this->ModelName->virtualFields['my_virtual_field_title'] = " 
    CASE 
     WHEN title = 'custom text' THEN 'custom result' 
     . 
     . 
     . 
     ELSE '' 
    END 
"; 

更多信息: http://book.cakephp.org/2.0/en/models/virtual-fields.html

+0

問題是我不知道變量是什麼,直到我運行查找。如何使用虛擬字段將其注入到查找中? – khany 2014-09-22 12:25:48

+0

你有找到'$ data''Make'] ['name']'嗎? – Farshad 2014-09-22 12:33:30

+0

是的,但只有 – khany 2014-09-22 13:18:14