我正在尝试使用以下命令更新一行,但 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 的最新版本。
我做错了什么?idinWHERE子句怎么可能6?
编辑:它使用 Bake 生成的代码产生相同的结果。也许模型或数据库有问题?
编辑 2:我正在记录所有查询,在尝试更新之前,CakePHP 执行了一些操作SELECT count(*),它使用WHERE id = 6.
编辑 3:插入、删除和读取工作正常。
最后更新:问题解决
我不确定发生了什么,但我认为我解决了问题。
首先,更新不是使用 Bake 生成的代码的工作事件。
其次,只有Administrators的更新不起作用,其他的都可以。
第三,我认为问题来自表中的一列,administrators它也被称为administrators,它是一个TINYINT(1). 我将列名更改为administrators_area,也更改了一些代码,一切正常。
我认为本专栏造成了一些冲突,因此,UPDATE 不起作用。在尝试此操作之前,我将表名更改为users保持列不变administrators并且也可以正常工作。
如果问题不是表名和同名表列冲突,那我改名后问题解决了,真是太巧了。