使用这样的代码时:
$Model->find('all', array(
'conditions' => array(
'field' => '1111'
)
));
其中field是varchar mysql field cake生成如下查询:
SELECT * FROM Models WHERE field = 1111;
而非预期
SELECT * FROM Models WHERE field = '1111';
这也使得mysql将整个DB转换为int而不是使用字符串索引。 我正在尝试优化其他人编写的已经正常工作的系统,而快速grep显示了我需要“修复”的数千个查找。因此,唯一可接受的解决方案应该是模型层或mysql层。
tl; dr:如何使Cake将条件中的整数字符串作为字符串传递给mysql而不是数字?
答案 0 :(得分:0)
在评论中用尽了字符。 你真的应该这样做吗?
在PHP(蛋糕)级别进行优化。 find()包装器并不理想。它们非常强大但非常慢。它们允许快速开发,但需要更多的查询。
所以你应该尝试做一些瓶颈固定。 数据库可能(内部)仍然是调度程序链中最快的部分 - 有或没有强制转换。
更具体: