CakePHP 2.4.2为什么Cake使用模型名称作为SQL查询?

时间:2013-11-14 17:18:20

标签: mysql cakephp model

我有一个新鲜的git repo CakePHP应用程序。我刚刚制作了一个新模型(Ingests)来跟踪我们系统带来的数据。我想创建函数start()和end(),但是end是受保护的,所以我切换到begin()和finish()。

无论我做什么,CakePHP都试图逐字执行模型函数名称作为SQL查询。我在这个应用程序中有另一个模型,我本周一直在工作,根本没有这个问题。今天创建一个新的表/模型就是出现问题的时候。

IngestsController.php

public function test(){


    $this->autoRender = false;

    //$result = $this->Ingest->finish();
    $result = $this->Ingest->xyz();

    debug($result);

}

Ingests.php模型

public function finish($id){

    return 'giraffe';

}

public function xyz(){

    return 'abc';

}

输出:

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error
in your SQL syntax; check the manual that corresponds to your MySQL server
version for the right syntax to use near 'xyz' at line 1

SQL Query: xyz

我尝试了xyz(),因为xyz()无法成为受保护/不允许的函数名称......但显然它和finish()一样糟糕。如果我运行finish()函数,我得到相同的输出......“SQL查询:完成”

1 个答案:

答案 0 :(得分:2)

检查您的文件名,文件名模型的名称应为Ingest.php而不是Ingests.php,同时检查您的班级声明:

<?php
App::uses('AppModel', 'Model');

class Ingest extends AppModel { //Make sure the model name is singular

    public function finish($id){

        return 'giraffe';

    }

    public function xyz(){

        return 'abc';

    }
}