0

我有一個問題創建關係(外鍵)MI模型(表)之間,我跟着蛋糕文檔,但無法正常工作關係(外鍵)CakePHP的

的關係是馬卡報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' 
     ) 
    ); 

} 

?> 

ModelosContro米勒

<?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'); 
      } 
     } 
    } 
} 


?> 

錯誤拋出是:

錯誤:調用一個成員函數查找()一個非對象 文件:/var/www/tlfmovil/app/Controller/ModelosController.php
Line:31

我認爲錯誤是因爲關係設置不正確,請幫助我。

對不起,我的英語不好!

+0

不使用英語進行命名的問題是,由於複數的處理方式不同,因此常規會變得無法使用。嘗試在你的Marca模型中設置'public $ useTable ='marcas';'。 – Nunser 2013-04-23 15:05:57

+0

@nuns - 出現錯誤並不是因爲缺少表格,而是因爲沒有找到模型,因爲某些關聯不起作用。 – Dave 2013-04-23 15:20:57

+0

檢查是否實際使用'Modelo'模型,並且CakePHP不生成'通用'模型; '調試(get_class($ this-> Modelo));' – thaJeztah 2013-04-23 22:22:20

回答

0

即使使用var,您的關聯看起來也不錯,但它也不應該是數據庫問題,否則Cake會通知您缺少數據庫表。

但是,您應該更多地使用CakePHP約定來確保問題不是來自錯誤。 使用蛋糕烘焙控制檯或online CakePHP baking tool生成您的模型和控制器文件(您可以隨時將翻譯更改爲西班牙文),以排除代碼中的約定問題。

+0

我試過你的代碼,它對我很好。你確定你的Models文件名沒有錯字嗎? – Chris 2013-04-24 15:09:36

+0

花了2天試圖找到解決方案,並驗證的形式,不知道爲什麼......問題是,模型名稱以大寫字母開頭,我注意到通過您放置的鏈接..當我看到模型以大寫開頭 謝謝Chris PD:將鏈接放在收藏夾中xD – Cocuba 2013-04-26 21:10:31

+0

很高興您找到解決方案,並且在線烘焙工具幫助! :) – Chris 2013-04-29 09:28:16

0

當指定$belongsTo$hasMany變量時,嘗試使用public而不是var