0

내가 마일 모델 (테이블) 사이의 문제 생성의 관계 (외래 키)가, 내가 케이크 설명서를 따라하지만관계 (외래 키) 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
줄 : 31

관계가 올바르게 설정되지 않았기 때문에 오류라고 생각합니다. 제게 도움주세요.

죄송합니다.

+0

영어를 이름 지정에 사용하지 않는 문제는 복수형이 다르게 처리되기 때문에 규칙이 엉망이된다는 것입니다. Marca 모델에서'public $ useTable = 'marcas';'를 설정하십시오. – Nunser

+0

@nuns - 오류는 테이블이 부족할 필요가 없습니다. 연관이 작동하지 않는 무언가가 있기 때문에 모델을 찾지 않아서 발생했습니다. – Dave

+0

'Modelo' 모델이 실제로 사용되고 CakePHP가 'generic'모델을 생성하지 않는지 확인하십시오; 'debug (get_class ($ this-> Modelo)); ' – thaJeztah

답변

0

귀하의 협회도 var으로 잘 보일 것입니다. 데이터베이스 문제가 아니어야합니다. 그렇지 않으면 Cake는 누락 된 데이터베이스 테이블을 알려줍니다.

그러나 CakePHP 규칙을 더 잘 지켜서 문제가 오타가 아닌지 확인해야합니다. 케이크 베이크 콘솔 또는 online CakePHP baking tool을 사용하여 모델 및 컨트롤러 파일을 생성합니다 (나중에 스페인어로 번역을 변경하여 코드에서 규칙 문제를 배제 할 수 있음).

+0

나는 당신의 코드를 시험해 보았고, 그것은 나에게 잘 작동한다. 모델 파일 이름에 오타가없는 것은 확실합니까? – Chris

+0

은 2 일 동안 폼의 유효성 검사와 유효성 검사를 찾으려고했는데 이유를 알지 못했습니다 ... 문제는 모델 이름이 대문자로 시작한다는 것입니다. 내가 링크를 통해 알아 봤습니다. 모델을 보았을 때 대문자로 시작 Chris 고맙습니다. PD : 즐겨 찾기에 링크 추가 xD – Cocuba

+0

솔루션을 찾았을 때 온라인 북킹 도구가 도움이되었습니다! :) – Chris

0

$belongsTo$hasMany 바르를 지정할 때 var 대신 public을 사용해보십시오.