cakephp在mysql字段列表中使用计算字段

cakephp在mysql字段列表中使用计算字段,mysql,cakephp,Mysql,Cakephp,我试图返回一个mysql字段,该字段在返回到Cake之前应用了mysqlREPLACE函数。我实际上是在尝试从字段中删除与我的变量匹配的文本 从理论上讲,在这个发现中,我想要: 'fields' => array('REPLACE(E.title, "'.$data['Make']['name'].'", "") AS E.title', ...) 我该怎么做 感谢您尝试在您的模型中使用 class ModelName extends AppModel { public $vir

我试图返回一个mysql字段,该字段在返回到Cake之前应用了mysql
REPLACE
函数。我实际上是在尝试从字段中删除与我的变量匹配的文本

从理论上讲,在这个发现中,我想要:

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

感谢您尝试在您的模型中使用

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
";
更多信息:

。当您尝试此操作时会发生什么情况?你有错误吗?我发现了SQL注入漏洞。请正确引用输入!问题是在运行find之前,我不知道变量是什么。如何使用虚拟字段将其注入到查找中?在调用find之前是否有
$data['Make']['name']
?好的,请直接使用call for virtual fields作为我的更新。阅读整理好的文件。基本上是您所说的,但没有其他案例(只是替换)和在模型中设置默认值(不是公式)。按照惯例,您的字段名最好是小写:
my\u virtual\u field\u title