0

我在创建 mi 模型(表)之间的关系(外键)时遇到问题,我遵循了 cake 文档但不起作用

关系是 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'
        )
    );

}

?>

模型控制器

<?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

我认为错误是因为关系设置不正确,请帮帮我。

对不起,我的英语不好!

4

2 回答 2

0

即使使用 ,您的关联似乎也很好var,这也不应该是数据库问题,否则 Cake 会通知您缺少数据库表。

但是,您应该更多地遵守 CakePHP 约定,以确保问题不是来自拼写错误。使用 cake bake 控制台或在线 CakePHP 烘焙工具生成模型和控制器文件(之后您可以随时将翻译更改为西班牙语)以排除代码中的约定问题。

于 2013-04-23T15:28:14.567 回答
0

Try using public instead of var when specifying $belongsTo and $hasMany vars.

于 2013-04-23T15:19:45.850 回答