Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Cakephp Tabla inexistente en la consulta - cakePHP - DboSource.php

Estas en el tema de Tabla inexistente en la consulta - cakePHP - DboSource.php en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy trabajando en un proyecto que me pasaron, basado en Cake. Se bastante sobre como funciona el framework, pero hay cosas que no se como ...
  #1 (permalink)  
Antiguo 06/03/2012, 11:44
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Pregunta Tabla inexistente en la consulta - cakePHP - DboSource.php

Estoy trabajando en un proyecto que me pasaron, basado en Cake. Se bastante sobre como funciona el framework, pero hay cosas que no se como funcionan. Por ejemplo, el ORM que tiene cake incrustado, como funciona?

Bueno, la cuestion es que hay una consulta que me está tirando este error. Se trata de una columna que no existe y que he buscado en tooodos los archivos. Ademas tampoco existe en base de datos. La columna se llama cuenta_id.

Cita:
exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Detallepublicacion.cuentum_id' in 'field list'' in /home/guillermo/www/sentisalta/ssweb/app/Model/Datasource/DboSource.php:436
La pregunta es, porque no encuentro la palabra "cuentum" en ningun archivo pero sin embargo de tira error?

El codigo que tengo es este:
Código PHP:
Ver original
  1. public function admin_index()
  2.     {
  3.         try{
  4.             $this->layout = 'admin';
  5.             $this->paginate = array(
  6.                 "Cuenta" => array(
  7.                     'limit' => 2,
  8.                     'page' => 1,
  9.                     'order' => array(
  10.                         'Cuenta.fecha' => 'asc')
  11.                 )
  12.             );
  13.  
  14.             $this->set("cuentas", $this->paginate("Cuenta"));
  15.         } catch (Exception $e){
  16.             print($e);
  17.         }      
  18.     }

Código PHP:
Ver original
  1. class Cuenta extends AppModel {
  2.  
  3.     var $name = 'Cuenta';
  4.     var $useTable = 'cuenta';
  5.    
  6.     var $belongsTo = array(
  7.         'Usuario' => array(
  8.             'className' => 'usuario'
  9.         ),
  10.         'Estado' => array(
  11.             'className' => 'estado'
  12.         )
  13.     );
  14.    
  15.     var $hasMany = array(
  16.     'Detallepublicacion' => array(
  17.         'className' => 'Detallepublicacion'
  18.     ));
  19. }

Código PHP:
Ver original
  1. class Detallepublicacion extends AppModel {
  2.  
  3.     public $name = 'Detallepublicacion';
  4.     public $useTable = 'detallepublicacion';
  5.     public $belongsTo = array(
  6.         'Cuenta' => array(
  7.             'className' => 'Cuenta'
  8.         ),
  9.     );
  10.  
  11. }
  #2 (permalink)  
Antiguo 06/03/2012, 15:27
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Tabla inexistente en la consulta - cakePHP - DboSource.php

No se como funciona cake pero parece que Detallepublicacion o bien no tiene la clave foránea o esta tiene otro nombre y en este caso debes configurarlo correctamente http://book.cakephp.org/2.0/en/model...-together.html

Y en esos modelos veo var y variables publicas .

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 06/03/2012, 16:45
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: Tabla inexistente en la consulta - cakePHP - DboSource.php

Siguiendo tu consejo, intente declarar la fk, pero no cambió nada:

'foreignKey' => 'cuenta_id'

Quedó así:
Cita:
class Detallepublicacion extends AppModel {

public $name = 'Detallepublicacion';
public $useTable = 'detallepublicacion';
public $belongsTo = array(
'Cuenta' => array(
'className' => 'Cuenta',
'foreignKey' => 'cuenta_id'
)
);

}
Insisto en que la palabra "cuentum" no existe ni en los archivos ni en SQL. Por qué se busca cuentum_id?!
  #4 (permalink)  
Antiguo 07/03/2012, 02:15
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Tabla inexistente en la consulta - cakePHP - DboSource.php

Repito que no utilizo el fw, aunque creo que tienes que declarar la fk en la relación que tienes en Cuenta también(en el hasMany) y la razón de que no lo veas es que utiliza inflectors para deducir el nombre del campo a través del nombre de la tabla.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 07/03/2012, 07:54
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años
Puntos: 101
Respuesta: Tabla inexistente en la consulta - cakePHP - DboSource.php

Pues eso parace haber funcionado! Mil mil gracias.

Tengo esto:
Código PHP:
Ver original
  1. var $hasMany = array(
  2.         'Detallepublicacion' => array(
  3.             'className' => 'Detallepublicacion',
  4.             'foreignKey'    => 'cuenta_id'
  5.     ));

Me quedará la intriga de por que se generaba una campo "en latin" (cuentum) y solo en un ABM, siendo que en el resto del sistema tampoco se declaran las FK y sin embargo todo va bien por las deducciones que hace CAKE.

Etiquetas: cakephp, class, framework, inexistente, php, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:17.