【发布时间】:2022-02-17 08:38:44
【问题描述】:
使用CakePHP 2.x 和MySQL 5.6.40 我正在创建以下分页:
$options = array(
'contain' => array(
'Category',
'ProductImage'
),
'limit' => 10,
'order' => array(
'Product.year' => 'DESC',
'Product.month' => 'DESC'
)
);
但我忘记了我的 products.month 列是 varchar,所以我必须进行强制转换才能将 Product.month 转换为整数:
$options = array(
'contain' => array(
'Category',
'ProductImage'
),
'limit' => 10,
'order' => array(
'Product.year' => 'DESC',
'CAST(Product.month as INT)' => 'DESC'
)
);
但在 Query 输出中,它将 Order By CAST 删除为 INT
SELECT
...
FROM
`web_quality`.`products` AS `Product`
LEFT JOIN `web_quality`.`categories` AS `Category` ON (
`Product`.`category_id` = `Category`.`id`
)
WHERE
`Product`.`category_id` IN (
SELECT
id
FROM
categories
WHERE
tag = 'revistas'
AND company_id IN (
SELECT
id
FROM
companies
WHERE
tag = 'dr'
)
)
AND NOT (
(
(`Product`.`year` = '2022')
AND (`Product`.`month` = '2')
)
)
AND `Product`.`enabled` = '1'
ORDER BY
`Product`.`year` DESC,
LIMIT 10
此外,它不会产生任何类型的错误,如果我尝试使用 CAST 作为 INT 手动进行查询,它可以工作,但我必须使用 CakePHP 模型来完成,可能有什么问题?
非常感谢!
【问题讨论】:
标签: php mysql cakephp pagination cakephp-2.x