我正在尝试使用以下命令更新一行,但 CakePHP 总是'1'
在WHERE
子句中放一个。
# the PHP command
$this->Administrator->id = $id; # id = 6, it wasn't changed
$this->Administrator->save($this->request->data);
-- simplified version of the generated SQL
UPDATE `someTable` SET `someField` = 'value', `id` = '6' WHERE `id` = '1'
有趣的id
是,在更新部分生成的 SQL 中是正确的,但在WHERE
子句中不正确,是的,id
列是表中的主键。我正在使用 CakePHP 的最新版本。
我做错了什么?id
inWHERE
子句怎么可能6
?
编辑:它使用 Bake 生成的代码产生相同的结果。也许模型或数据库有问题?
编辑 2:我正在记录所有查询,在尝试更新之前,CakePHP 执行了一些操作SELECT count(*)
,它使用WHERE id = 6
.
编辑 3:插入、删除和读取工作正常。
最后更新:问题解决
我不确定发生了什么,但我认为我解决了问题。
首先,更新不是使用 Bake 生成的代码的工作事件。
其次,只有Administrators的更新不起作用,其他的都可以。
第三,我认为问题来自表中的一列,administrators
它也被称为administrators
,它是一个TINYINT(1)
. 我将列名更改为administrators_area
,也更改了一些代码,一切正常。
我认为本专栏造成了一些冲突,因此,UPDATE 不起作用。在尝试此操作之前,我将表名更改为users
保持列不变administrators
并且也可以正常工作。
如果问题不是表名和同名表列冲突,那我改名后问题解决了,真是太巧了。