Php 将字符串转换为数字将返回零
我有一个表,它的id是int类型的pk。 当我在php activerecord中执行以下mysql查询时 Location_cat::通过_sqlselect concat查找_,id为'id',来自Location_cat的文本 例如,它将“id”返回为0,而不是“142”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强制转换为字符串
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中一切都可以正常工作。有什么想法吗?