0

ドキュメントを何度読んでも、モデルを別のモデルに「関連付ける」ことができない例を見てください。

これが私の例です:

kitsと呼ばれるテーブルとgrades (本と著者を読む) と呼ばれるテーブルがあります。

キットは次のようになります (簡略化):

  1. ID (PK)
  2. grade_id (外部キー)
  3. 名前

グレードは次のようになります。

  1. ID (PK)
  2. コード

各キットには 1 つのグレードしかありません。命名規則に問題はありません。API で規定されているとおりです。

--

次のような KitsController.php というコントローラーがあります。

class KitsController extends AppController {
    public function index() {
        //simple find that limits to one (for readability)
        $pigs = $this->Kit->find("all", array( 
            "limit" => 1
        ));

        $this->set("pigs", $pigs);
    }
}

変数 $ pigs を出力する対応する index.ctp ファイルがあります(私が知っている生産レベルの変数名ではありません)。

--

KitModel.php というモデルがあります

class Kit extends AppModel {
    public $belongsTo = "Grade";//here is where I am confused
}

...そしてプレースホルダー用の空の Grade モデル

class Grade extends AppModel {

}

--

問題:

配列がページに印刷されると、次のようになります。

Array ( [0] => Array ( 
    [Kit] => Array ( 
        [id] => 1 
        [grade_id] => 1 
        [name] => Ferrari 
)   )   )

私の理解では、結果を印刷すると、キット情報とともにグレード情報が含まれているはずです。私がオンラインで見たすべての例で確かにそうです。さまざまな関係 (hasOne など) も試しましたが、役に立ちませんでした。また、クラス名と外部キーを含む配列を渡すことで長い形式を試しましたが、スキーマが CakePHP の規則と一致する場合は、そうする必要はありません。

私は何が欠けていますか?

4

1 に答える 1

5

KitModel.phpというモデルがあります

モデルのファイル名が正しくありません。する必要がありますKit.php。CakePHPが慣例に従って名前が付けられたモデルファイルを見つけられない場合、モデルのAppModelインスタンスを使用します。

于 2013-03-13T07:57:43.340 に答える