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 Query: finish"