Cakephp は、ポストグレス関数を実行するフィールドに引用符を追加しています。$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'))**",
)
Cake によって生成されるクエリは次のようになります。
SELECT concat('SP',lpad(CAST("RequestSpecialPrice"."deal_registration_id" AS **"TEXT"**),8,'0')) FROM table
「TEXT」から引用符を削除すると、クエリが機能します。
SELECT concat('SP',lpad(CAST("RequestSpecialPrice"."deal_registration_id" as **TEXT**),8,'0'))) FROM table
それらの引用符を追加しないように Cakephp を強制するにはどうすればよいですか?
LE 解決策は、cake の仮想フィールドを使用することでした。
私は宣言しました:
"concat('SP',lpad(CAST("RequestSpecialPrice"."deal_registration_id" AS "TEXT" ),8,'0')) as aaa"
モデルの仮想フィールドとして aaa をフィールドとして選択しました。