gpt4 book ai didi

php - Cakephp-3.x : How to change the data type of a selected alias?

转载 作者:行者123 更新时间:2023-12-03 23:05:11 26 4
gpt4 key购买 nike

当我尝试做的时候:

$fields = array('id' => 'custom_id', 'title' => 'some_name');

我得到的结果有 id 作为字符串。

如果我这样做:

$fields = array('custom_id', 'title' => 'some_name');

然后它将 custom_id 作为整数给出。

如何在不丢失数据类型的情况下获取 custom_id 作为 id。我阅读了文档,但没有找到太多帮助。

我认为虚拟领域可以做一些事情。但是是否可以在不使用虚拟字段等的情况下在查找查询中进行查询?

提前致谢

最佳答案

从 CakePHP 3.2 开始

您可以使用 Query::selectTypeMap() 添加更多类型,这些类型仅在检索数据时用于转换所选字段。

$query = $table
->find()
->select(['alias' => 'actual_field', /* ... */]);

$query
->selectTypeMap()
->addDefaults([
'alias' => 'integer'
]);

您可以使用任何内置数据类型,也可以使用自定义数据类型。在这种情况下,alias 字段现在将转换为整数。

另见

使用 CakePHP 3.1 及更早版本

你必须使用Query::typeMap(),这不仅会在检索数据时影响所选字段,而且还会影响其他需要根据需要转换数据的地方字段类型,这可能会导致不必要的冲突,因此请谨慎使用。

$query
->typeMap()
->addDefaults([
'alias' => 'integer'
]);

另见

更改现有列的类型

也可以更改表的现有列的​​类型,但是需要使用特定的语法来设置它们,即在 CakePHP 使用的列别名格式中,即表别名和列名由__,例如,对于具有 Articles 别名和名为 id 的列的表,它将是 Articles__id

这可以手动设置,或者更好的是通过 Query::aliasField() 检索,例如:

// $field will look like ['Alias__id' => 'Alias.id']
$field = $query->aliasField('id', $table->alias());

$query
->selectTypeMap()
->addDefaults([
key($field) => 'string'
]);

这会将 id 列的默认类型更改为 string

另见

关于php - Cakephp-3.x : How to change the data type of a selected alias?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35650306/

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