0

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"

4

1 に答える 1

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

    }
}
于 2013-11-14T17:46:19.180 に答える