我正在尝试在名为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?
这是命名吗?
这是我的数据库模型:
答案 0 :(得分:1)
从PersonasController
开始,您默认只能访问Persona
模型。
如果您想在Tutor
模型上运行创建,则需要将var $uses = array('Persona','Tutor');
添加到PersonasController.php
的开头,如下所示:
<?php
class PersonasController extends AppController {
var $uses = array('Persona','Tutor');
....functions.....
}
?>
答案 1 :(得分:1)
如果您在hasMany
模型中的Persona
和Tutor
之间定义了Persona
关系,则可以使用Tutor
访问$this->Persona->Tutor->create()
模型并且不需要约瑟夫答案中的$uses
数组。