gpt4 book ai didi

php - cakePHP 3.3 在 where() 中转换 typeMap

转载 作者:行者123 更新时间:2023-11-28 23:18:22 27 4
gpt4 key购买 nike

我正在尝试从 VARCHAR 类型的表字段 customernumber 中获取数据。就是这种情况,因为客户编号可以像“0024”和“1234”。

$query->getTypeMap() 告诉我它在 cakePHP 中有类型 string。现在我们的客户希望在输入“24”或“0024”时获得“0024”的客户。

没问题我心想,所以我只是将输入值打字为 int。但是 cakePHP ORM 似乎是根据类型映射进行转换的,我不知道如何即时更改类型。

我试过:

$query->find()
->select()
->where(['customernumber' => intval($input)]
->typeMap(['customernumber' => 'integer']);

但在我的搜索输入中输入 24 时,我收到一个空结果。

希望您能看到我要找的东西。谢谢你!

最佳答案

谢谢大家,对不起,如果我的问题不是那么清楚,但是今天早上我找到了解决方案,在考虑了您的评论和回答并通过 ORM 进行了一些调试后,我终于找到了解决方案,这对我有用。

问题是字段 customernumber 被设置为类型“文本”,并且在执行像 customernumber = :comparevalue 这样的比较操作时,:comparevalue 总是被强制转换为一段文字。所以我不得不将它动态地映射到“整数”,我现在就是这样做的:

$query->where(function ($exp) use ($input) {
return $exp->eq('customernumber', intval($input), 'integer');
})

关于php - cakePHP 3.3 在 where() 中转换 typeMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42853150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com