Postgresql Cakephp正在向我的查询中添加引号。如何解决这个问题?
Cakephp正在我的字段中添加引号,我在这里执行一些postgress函数。我使用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'
$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
)
);