【问题标题】:CakePHP error: Call to a member function getColumnType()CakePHP 错误:调用成员函数 getColumnType()
【发布时间】:2011-07-17 11:49:49
【问题描述】:

我正在尝试编辑数据库中的记录,但脚本给了我以下错误:

致命错误:在第 980 行对 G:\wamp\www\a11\a\cake\libs\model\model.php 中的非对象调用成员函数 getColumnType()

奇怪的是,如果我从表单中删除 id(因此它会创建一个新记录),它不会抱怨。这意味着 id 列有问题。

但是什么?

就在保存之前,我转储了要保存的数组:

Array
(
[Process] => Array
    (
        [id] => 5
        [oobject] => 1
        [oproperty] => Number
        [wproperty] => Payed
        [do] => somecode
        [active] => 1
        [name] => Testing
        [changed_user_id] => 3
        [selftrigger] => 1
    )

)

保存代码现在如下所示:

$d = $this->data;
if ($this->Process->save($d)) {

id存在于数据库中

感谢您的帮助!

【问题讨论】:

    标签: php cakephp cakephp-1.3


    【解决方案1】:

    id 列标有“id”(不带引号),对吗?如果您使用的是 MySQL,请确保 ID 类型是 int(不是任何变体)并且它是具有自动增量的主键。模型类需要这些设置才能正常运行。

    从这个错误来看,您似乎将 id 列设置为 int 以外的值。

    【讨论】:

    • 谢谢你的回答,斯科特。它设置为 bigint、主键和 auto_increment - 就像我所有其他表一样 =/ 是否有任何我应该知道的缓存文件?我在tmp/cache/models目录下删除了一个,没有效果。
    • 它必须设置为 int,而不是 big int。当 ID 列设置为 int 以外的任何值时,Cake 将无法识别。尝试将列设置为 int 并查看问题是否消失。
    • 查看此链接以查看 cake 支持的 MySQL 数据类型...book.cakephp.org/view/1002/…
    • 还要确保 id 不允许空值。
    • int 没有解决问题。我在数据库中的其他几个表上使用了 bigint,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2014-08-23
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多