Postgresql Cakephp正在向我的查询中添加引号。如何解决这个问题?

Postgresql Cakephp正在向我的查询中添加引号。如何解决这个问题?,postgresql,cakephp,Postgresql,Cakephp,Cakephp正在我的字段中添加引号,我在这里执行一些postgress函数。我使用$this->paginate,其中字段数组如下所示: 'fields' => array( 'DealRegistration.id', 'DealRegistration.company_name', 'RequestSpecialPrice.total_price', 'RequestSpecialPrice.request_price', 'RequestSpecialPrice.created'

Cakephp正在我的字段中添加引号,我在这里执行一些postgress函数。我使用
$this->paginate
,其中字段数组如下所示:

'fields' => array(  'DealRegistration.id',
'DealRegistration.company_name',
'RequestSpecialPrice.total_price',
'RequestSpecialPrice.request_price',
'RequestSpecialPrice.created',
'RequestSpecialPrice.partner_status',
'RequestSpecialPrice.status',
'RequestSpecialPrice.discount',
"**concat('SP',lpad(CAST(RequestSpecialPrice.deal_registration_id as TEXT),8,'0'))**",
)
SELECT concat('SP',lpad(CAST("RequestSpecialPrice"."deal_registration_id" AS **"TEXT"**),8,'0')) FROM table
cake生成的查询如下所示:

'fields' => array(  'DealRegistration.id',
'DealRegistration.company_name',
'RequestSpecialPrice.total_price',
'RequestSpecialPrice.request_price',
'RequestSpecialPrice.created',
'RequestSpecialPrice.partner_status',
'RequestSpecialPrice.status',
'RequestSpecialPrice.discount',
"**concat('SP',lpad(CAST(RequestSpecialPrice.deal_registration_id as TEXT),8,'0'))**",
)
SELECT concat('SP',lpad(CAST("RequestSpecialPrice"."deal_registration_id" AS **"TEXT"**),8,'0')) FROM table
如果我从“文本”中删除引号,则查询将起作用:

SELECT concat('SP',lpad(CAST("RequestSpecialPrice"."deal_registration_id" as **TEXT**),8,'0'))) FROM table
如何强制cakephp不添加这些引号

L.E。 解决方案是使用cake的虚拟字段

我宣布:

concat('SP',lpad(CAST(“RequestSpecialPrice”,“deal\u registration\u id”为“TEXT”),8,'0')为aaa


作为模型中的虚拟字段,并且刚刚选择aaa作为字段。

当使用像这样的本机SQL函数时,通常最好创建一个虚拟字段

app/Model/RequestSpecialPrice.php

public $virtualFields = array(
    'my_virtual_field' => "CONCAT('SP', LPAD(CAST(RequestSpecialPrice.deal_registration_id as TEXT), 8, '0'))"
);
用法

$this->RequestSpecialPrice->find('first', array(
    'fields' => array(
        'DealRegistration.id',
        'DealRegistration.company_name',
        'RequestSpecialPrice.total_price',
        'RequestSpecialPrice.request_price',
        'RequestSpecialPrice.created',
        'RequestSpecialPrice.partner_status',
        'RequestSpecialPrice.status',
        'RequestSpecialPrice.discount',
        'RequestSpecialPrice.my_virtual_field' // Use virtual field
    )
);