2013-11-14 18 views
0

我有一個新鮮出來的Git回購CakePHP應用程序。我只是創建了一個新模型(Ingests)來跟蹤我們的系統帶來了什麼數據。我想讓函數start()和end()結束,但是end被保護起來,所以我切換到begin()和finish()。CakePHP 2.4.2爲什麼Cake使用模型名稱作爲SQL查詢?

無論我做什麼,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()一樣糟糕。如果我運行完成()函數,我得到相同的輸出...「SQL查詢:完成」

回答

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'; 

    } 
} 
+0

謝謝謝謝!這正是問題所在。發生了什麼事是我在做蛋糕烘烤時使用了錯誤的模型名稱,所以烘烤過程錯誤地創建了名爲file的複數模型。 – DirtyBirdNJ

相關問題