1

データベースへのドクトリンクエリに問題があり、何が問題なのかわかりません。これが取引です:これは私がデータベースを作成するために使用した実際のmysqlクエリです:

            create table productos ( 
                codigoProducto int (8) unsigned auto_increment primary key, 
                nombre varchar(100) not null,
                id_categoria smallint(3) unsigned,
                descripcion text,
                foto varchar(100),
                precio smallint (4) unsigned not null, 
                visitado int (7),
                habilitado boolean,

                foreign key (id_categoria) 
                references  categorias(id)
                on update cascade
                on delete restrict
            )engine=innoDB;

            create table facturas( 
                id int (8) unsigned auto_increment primary key,
                id_comprador int (7) unsigned, 
                metodo_pago boolean,
                forma_entrega boolean,
                fecha datetime,

                foreign key (id_comprador)
                references  compradores(id)
                on update cascade
                on delete cascade
            )engine=innoDB;

            create table detallefactura(
                id int(8) unsigned auto_increment primary key,
                id_producto int(8) unsigned,
                id_factura int(8) unsigned,
                cantidad smallint (4),

                foreign key(id_producto)
                references productos(codigoProducto)
                on update cascade
                on delete cascade,

                foreign key(id_factura)
                references facturas(id)
                on update cascade
                on delete cascade
            )engine=innoDB;

「detalleFactura」は、請求書ごとに複数の製品を持つための「productos」と「facturas」の結合テーブルです。したがって、次のようにして、購入したすべての製品を1つの請求書にまとめようとしています。

            static function traerProductosComprados($id){
                $query = Doctrine_Query::create()
                        ->select('d.id, p.nombre, p.precio, d.cantidad')
                        ->from('Detallefactura d')
                        ->leftjoin('d.Productos p')
                        ->where('d.id_factura = ?',$id);
                return $query->execute()->toArray();
            }

クエリをエコーすると、次のように表示されます。

            SELECT d.id, p.nombre, p.precio, d.cantidad FROM Detallefactura d LEFT JOIN d.Productos p WHERE d.id_factura = ?    

これをphpmyadminに貼り付けると、次のエラーがスローされます。

1064-SQL構文にエラーがあります。'WHERE d.id_factura =?の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。1行目でLIMIT0、30';

私は今アイデアがありません、私が欠けている何かが他にあるかどうか教えてください!

4

1 に答える 1

0

ON左結合の句を指定する必要があります

于 2012-12-20T10:28:30.813 に答える