0

という名前のテーブルに新しいレコードを作成しようとしていますtutors。CakePHPの規則に従うために、そのように名前を付けました。

$codigoAlumnoNuevo = $this->Persona->id;
$tipoPersona = $this->request->data('TipoPersona'); # Just grabbing a POSTED value.

switch ($tipoPersona) {
    case '0': # Es Tutor
        $this->Tutor->create();
        $this->Tutor->PersonaId = $codigoAlumnoNuevo;
        $this->Tutor->save();
        die("Saved record");
        break;

    case '1': # Es Alumno
        $this->Tutor->create();
        $this->Tutor->PersonaId = $codigoAlumnoNuevo;
        $this->Tutor->save();
        die("Saved record");
    break;

    case '2': # Es Coordinador de Programa
        $this->Tutor->create();
        $this->Tutor->PersonaId = $codigoAlumnoNuevo;
        $this->Tutor->save();
        die("Saved record");
    break;

    default:
        break;
}

このコードを実行しようとすると、次の例外が発生します。

非オブジェクトのメンバー関数create()の呼び出し

これを試してみると、それ$this->TutorがNULLであることがわかります。

var_dump($this->Tutor);

しかし、同じコントローラーで、問題なく呼び出すことができます$this->Persona->create();$this->Personanullではありません。どうしてこれなの?ペルソナは利用できるのにチューターは利用できないのはなぜですか?

ネーミングなの?

これが私のデータベースモデルです:

ここに画像の説明を入力してください

4

2 に答える 2

1

からは、デフォルトでのみモデルにPersonasControllerアクセスできます。Persona

モデルで作成を実行する場合は、 likeの先頭に次のようTutorに追加する必要があります。var $uses = array('Persona','Tutor');PersonasController.php

<?php
class PersonasController extends AppController {
    var $uses = array('Persona','Tutor');

    ....functions.....

}
?>
于 2012-10-03T15:20:26.353 に答える
1

モデル内でとhasManyの間の関係を定義した場合、モデルにアクセスでき、ジョセフの回答の配列は必要ありません。PersonaTutorPersonaTutor$this->Persona->Tutor->create()$uses

于 2012-10-03T15:30:57.977 に答える