Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将字符串转换为数字将返回零_Php_Mysql_Phpactiverecord - Fatal编程技术网

Php 将字符串转换为数字将返回零

Php 将字符串转换为数字将返回零,php,mysql,phpactiverecord,Php,Mysql,Phpactiverecord,我有一个表,它的id是int类型的pk。 当我在php activerecord中执行以下mysql查询时 Location_cat::通过_sqlselect concat查找_,id为'id',来自Location_cat的文本 例如,它将“id”返回为0,而不是“142” 有人知道这种行为吗?让我们在连接之前将id强制转换为字符串 SELECT CONCAT('#', CAST(id AS CHAR(15))) AS nid FROM location_cat 您正试图覆盖“id”

我有一个表,它的id是int类型的pk。 当我在php activerecord中执行以下mysql查询时

Location_cat::通过_sqlselect concat查找_,id为'id',来自Location_cat的文本

例如,它将“id”返回为0,而不是“142”


有人知道这种行为吗?

让我们在连接之前将id强制转换为字符串

SELECT  CONCAT('#', CAST(id AS CHAR(15))) AS nid
FROM   location_cat

您正试图覆盖“id”字段,但这会给您带来问题。activerecord对象知道它自己的主键,我假设id字段,并使用它处理各种事情。如果您试图在该字段中选择其他内容,这将不起作用

例如,您将获得id为1的对象。您已将其重命名为1。现在AR认为它是一个主键为1的对象。但事实并非如此

底线是,如果您想使用实际的activerecord对象,就不应该在id字段中添加其他内容


您可能只想获取数据,但在返回$object->id字段时,可以添加。例如,为id制作一个神奇的getter我相信AR允许您命名这个getId,但是,在uu get中修复它。

我需要将列名设置为id,因为我不想为了重命名键而再次循环结果。事实上,给它取一个其他的名字可以让它在不使用char的情况下工作。这是phpactiverecord的一种行为,在mysql中一切都可以正常工作。有什么想法吗?