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

[Cake-Php] ayuda con relaciones hasbelongstomany

Estas en el tema de [Cake-Php] ayuda con relaciones hasbelongstomany en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente , hace dias me he aventurado con Cake-Php que recomiendo a todo el mundo porque la verdad que está muy bien y se ...
  #1 (permalink)  
Antiguo 26/08/2009, 13:09
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Sonrisa [Cake-Php] ayuda con relaciones hasbelongstomany

Hola gente , hace dias me he aventurado con Cake-Php que recomiendo a todo el mundo porque la verdad que está muy bien y se puede trabajar mucho más rápido que con PHP puro y duro.

El problema con el que me he encontrado es con una relación hasBelongsToMany que voy a postear haber si alguien me puede echar un cable pues no se donde esta el fallo , como curiosidad comentar que tanto con mis controladores como con scaffolding el error que me tira es el mismo , por ello deduzco que el fallo lógicamente no es de los controladores por eso no los voy a postear.

Error que me tira:
Código:
Warning (512): SQL Error: 1054: Unknown column 'PedidosProducto.id' in 'field list' [CORE/cake/libs/model/datasources/dbo_source.php, line 524]
Code | Context
$sql	=	"SELECT `PedidosProducto`.`id` FROM `pedidos_productos` AS `PedidosProducto`   WHERE `PedidosProducto`.`producto_id` = 11   "
$error	=	"1054: Unknown column 'PedidosProducto.id' in 'field list'"
$out	=	null

            $out = null;
            if ($error) {
                trigger_error("<span style = \"color:Red;text-align:left\"><b>SQL Error:</b> {$this->error}</span>", E_USER_WARNING);

DboSource::showQuery() - CORE/cake/libs/model/datasources/dbo_source.php, line 524
DboSource::execute() - CORE/cake/libs/model/datasources/dbo_source.php, line 201
DboSource::fetchAll() - CORE/cake/libs/model/datasources/dbo_source.php, line 336
DboSource::read() - CORE/cake/libs/model/datasources/dbo_source.php, line 652
Model::find() - CORE/cake/libs/model/model.php, line 1990
Model::_deleteLinks() - CORE/cake/libs/model/model.php, line 1799
Model::del() - CORE/cake/libs/model/model.php, line 1711
ProductosController::delete() - APP/controllers/productos_controller.php, line 77
Object::dispatchMethod() - CORE/cake/libs/object.php, line 118
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 227
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 194
[main] - APP/webroot/index.php, line 88

Query: SELECT `PedidosProducto`.`id` FROM `pedidos_productos` AS `PedidosProducto` WHERE `PedidosProducto`.`producto_id` = 11

Warning (2): Cannot modify header information - headers already sent by (output started at /opt/lampp/htdocs/pedidoscake/cake/basics.php:111) [CORE/cake/libs/controller/controller.php, line 644]

Code | Context

$status	=	"Location: http://localhost/pedidoscake/productos"

header - [internal], line ??
Controller::header() - CORE/cake/libs/controller/controller.php, line 644
Controller::redirect() - CORE/cake/libs/controller/controller.php, line 625
ProductosController::delete() - APP/controllers/productos_controller.php, line 83
Object::dispatchMethod() - CORE/cake/libs/object.php, line 118
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 227
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 194
[main] - APP/webroot/index.php, line 88

(default) 10 queries took 7 ms Nr	Query	Error	Affected	Num. rows	Took (ms)
1	DESCRIBE `productos`		6	6	1
2	DESCRIBE `categorias`		2	2	1
3	DESCRIBE `pedidos`		7	7	1
4	DESCRIBE `clientes`		12	12	1
5	DESCRIBE `estados`		2	2	2
6	DESCRIBE `pedidos_productos`		5	5	1
7	SELECT COUNT(*) AS `count` FROM `productos` AS `Producto` WHERE `Producto`.`id` = 11 		1	1	0
8	SELECT `PedidosProducto`.`id` FROM `pedidos_productos` AS `PedidosProducto` WHERE `PedidosProducto`.`producto_id` = 11 	1054: Unknown column 'PedidosProducto.id' in 'field list'			0
9	SELECT `Producto`.`categoria_id` FROM `productos` AS `Producto` LEFT JOIN `categorias` AS `Categoria` ON (`Producto`.`categoria_id` = `Categoria`.`id`) WHERE `Producto`.`id` = 11 LIMIT 1		1	1	0
10	DELETE FROM `productos` WHERE `productos`.`id` = 11		1		0
Modelos afectados

Producto.php
Código:
<?php
class Producto extends AppModel
{
	var $name='Producto';
	var $belongsTo='Categoria';
	var $hasAndBelongsToMany = 'Pedido';
}
?>
Pedido.php
Código:
<?php
class Pedido extends AppModel
{
	var $name='Pedido';
	var $belongsTo=array ('Cliente','Estado');
	var $hasAndBelongsToMany = 'Producto';
}
?>
En la bd he creado además de las tablas pedidos y productos otra llamada pedidos_productos SIN ID y con dos foreingkey pedidos_id y productos_id .
La verdad que le he dado muchas vueltas y no se en que fallo , porque casi todo lo hace bien, añadir productos, modificarlos y solo falla al querer borrarlos . Además me gustaría poder borrar solo los productos sin tener que borrar los pedidos asociados ni las categorías, pero parece que dependece='false' no funciona con hasBelongsToMany ni parece hacerle caso a $this->Producto->recursive = 0;

Un saludo y mil gracias de antemano
  #2 (permalink)  
Antiguo 26/08/2009, 13:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: ayuda CAKE-Php hasbelongstomany

Tema trasladado desde PHP
  #3 (permalink)  
Antiguo 27/08/2009, 10:51
Avatar de racanix  
Fecha de Ingreso: diciembre-2008
Ubicación: Morelia Mich.
Mensajes: 192
Antigüedad: 15 años, 4 meses
Puntos: 8
Respuesta: [Cake-Php] ayuda con relaciones hasbelongstomany

Creo que el error esta en que quieres extraer un campo que no
existe en tu tabla. Como tu lo comentaste

Cita:
En la bd he creado además de las tablas pedidos y productos otra llamada pedidos_productos SIN ID y con dos foreingkey pedidos_id y productos_id .
El error te lo dice claramente

Cita:
Warning (512): SQL Error: 1054: Unknown column 'PedidosProducto.id' in 'field list' [CORE/cake/libs/model/datasources/dbo_source.php, line 524]
Code | Context
$sql = "SELECT `PedidosProducto`.`id` FROM `pedidos_productos` AS `PedidosProducto` WHERE `PedidosProducto`.`producto_id` = 11 "
El cakephp esta tratando de tomar un campo que no existe.

suerte
  #4 (permalink)  
Antiguo 27/08/2009, 10:57
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 21 años, 10 meses
Puntos: 8
Respuesta: [Cake-Php] ayuda con relaciones hasbelongstomany

Cita:
Iniciado por racanix Ver Mensaje
Creo que el error esta en que quieres extraer un campo que no
existe en tu tabla. Como tu lo comentaste
Hola , si eso lo se , pero los patrones de diseño no me permiten poner ese campo ID en la tabla pedidos_productos porque sino sería pasarme las formas normales de diseño de de bases de datos por el forro, además en todos los ejemplos que tengo de Cake Php la relación hasBelongsToMany tienes que crear una tabla relacional pedidos_productos SIN ID , osea que nose porque busca la dichosa ID.
Si pongo la ID en la tabla funciona perfectamente y no tira el error , pero como he dicho eso es romper con las formas normales de diseño de bases de datos.

Un saludo
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 06:16.