我在创建mi模型(表格)之间的关系(外键)时遇到问题,我按照蛋糕文档但不起作用
关系是Marca 1-N Modelos
模型Marca.php
<?php
class Marca extends AppModel
{
var $name = 'Marca';
public $displayField = 'nombre';
var $hasMany = array(
'Modelo' => array(
'className' => 'Modelo',
'foreignKey' => 'marca_id'
)
);
}
?>
模型Modelo.php
<?php
class Modelo extends AppModel
{
var $name = 'Modelo';
var $belongsTo = array(
'Marca' => array(
'className' => 'Marca',
'foreignKey' => 'marca_id'
)
);
}
?>
ModelosController
<?php
class ModelosController extends AppController{
var $name = 'Modelos';
var $helpers = array('Html','Form');
//var $scaffold;
function index(){
$modelos = $this->Modelo->find('all',array(
'fields'=>array(
'Modelo.nombre',
'Modelo.valido',
'Modelo.id',
'Modelo.marca_id'),
'order'=>'Modelo.nombre ASC')
);
$this->set('modelos',$modelos);
}
function add(){
if (!empty($this->data)){
$this->Modelo->create();
if ($this->Modelo->save($this->data)){
$this->Session->SetFlash('Modelo Nuevo Creado');
$this->redirect(array('action'=>'index'),null,true);
}else{
$this->Session->SetFlash('No se ha Agregado el Modelo, intente de Nuevo');
}
}
// $this->loadModel('Marca');
$marcas = $this->Modelo->Marca->find('list'); <<-----this is 31 line, where is the error
debug($marcas);
$this->set(compact('marcas'));
}
function edit($id = null){
if (!$id){
$this->Session->SetFlash('Modelo Incorrecto');
$this->redirect(array('action'=>'index'),null,true);
}
if (empty($this->data)){
$this->data = $this->Modelo->find('first',array('conditions'=>array('Modelo.id'=> $id)));
}else{
if ($this->Modelo->save($this->data)) {
$this->Session->SetFlash('El Modelo se ha Guardado');
$this->redirect(array('action'=>'index'),null,true);
}else{
$this->Session->SetFlash('La Modelo No fue Guardado, intente de Nuevo');
}
}
}
}
?>
错误抛出是:
错误:在非对象上调用成员函数find()
文件:/var/www/tlfmovil/app/Controller/ModelosController.php
行:31
我认为错误是因为关系设置不正确,请帮助我。
抱歉我的英文不好!
答案 0 :(得分:0)
指定public
和var
vars时,请尝试使用$belongsTo
代替$hasMany
。
答案 1 :(得分:0)
即使使用var
,您的关联似乎也很好,它也不应该是数据库问题,否则Cake会通知您缺少数据库表。
但是你应该更多地遵循CakePHP惯例,以确保问题不是来自错字。 使用蛋糕烘焙控制台或online CakePHP baking tool生成模型和控制器文件(您可以随后将翻译更改为西班牙语)以排除代码中的约定问题。