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->Persona不为空。为什么是这样?为什么 Persona 可用但 Tutor 不可用?

是命名的事情吗?

这是我的数据库模型:

在此处输入图像描述

4

2 回答 2

1

PersonasController默认情况下,您只能从您那里访问Persona模型。

如果你想在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 回答