Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/08/2009, 13:09
Avatar de Dundee
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