d33x Posted July 27, 2016 Share Posted July 27, 2016 Hola, Estoy realizando un pequeño modulo y necesito soporte en un par de detalles. Actualmente estoy utilizando hookActionValidateOrder pero este hook no me permite actualizar un valor del order que justo se esta insertando. Lo que intento es que en el order que se este insertando editar un campo de esa misma tabla (ps_orders) de ese mismo order. Ejemplo: Se inserta un order con id 100. Una vez insertado el order, justo después, editar una columna de la tabla ps_orders del id = 100. En la función del hook puedo actualizar cualquier order MENOS el que se esta insertando en ese momento no entiendo porque. Muchísimas gracias de antemano, Un abrazo Link to comment Share on other sites More sharing options...
Gabriel Perez Posted July 27, 2016 Share Posted July 27, 2016 Estás intentado modificar la tabla directamente? Porqué no tratas de crear el objeto order y modificarlo? 1 Link to comment Share on other sites More sharing options...
ventura Posted July 27, 2016 Share Posted July 27, 2016 Seria de bastante ayuda que indicaras como lo estas haciendo 1 Link to comment Share on other sites More sharing options...
d33x Posted July 27, 2016 Author Share Posted July 27, 2016 (edited) Estás intentado modificar la tabla directamente? Porqué no tratas de crear el objeto order y modificarlo? Seria de bastante ayuda que indicaras como lo estas haciendo public function hookActionValidateOrder($params) { $id_cart = (int)$params["cart"]->id; if ($row = Db::getInstance()->getRow('SELECT * FROM `'._DB_PREFIX_.'orders` WHERE id_cart = '.$id_cart)){ $up = Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'orders` SET gift = 2 WHERE id_cart = '.(int)$row["id_cart"]); $order = new Order((int)$row["id_order"]); $order->gift = 2; $order->save(); } } @ventura @Gabriel Perez Lo hago con objeto también y nada... y si, quiero editar la tabla directamente. No me funciona ni con objeto ni editando la tabla con getInstance. Ahora lo tengo modificando la tabla gift pero la tabla es lo de menos la cosa es que actualice el order que se esta insertando. El problema esta en el order que justo se esta insertando por que si el WHERE id_cart lo pongo manualmente a un id anterior se actualiza perfectamente y cuando le pongo el id que le sigue ya no actualiza. Ejemplo: Va por el id_cart 10. Yo antes de crear el id_cart 11 pongo manualmente where id_cart = 11 y justo ese id ya no se actualiza (que es el que se ha insertado). Muchisimas gracias de antemano. Edited July 27, 2016 by d33x (see edit history) Link to comment Share on other sites More sharing options...
Gabriel Perez Posted July 27, 2016 Share Posted July 27, 2016 (edited) En $params, viene también el pedido, no necesitas buscarlo a traves del carrito. $params['order'] Edited July 27, 2016 by Gabriel Perez (see edit history) Link to comment Share on other sites More sharing options...
d33x Posted July 27, 2016 Author Share Posted July 27, 2016 En $params, viene también el pedido, no necesitas buscarlo a traves del carrito. $params['order'] ¡Muchas gracias! Pero independientemente de eso... ¿Por que no actualiza el mismo order que se esta insertando?. Muchas gracias de antemano. Un saludo Link to comment Share on other sites More sharing options...
ventura Posted July 27, 2016 Share Posted July 27, 2016 No he entendido del todo lo que quieres hacer pero en principio creo que seria algo mas simple $id_cart = (int)$params["cart"]->id; $order = $params['order']; $order->id_cart = $id_cart; if ($order->id_cart){ $order->gift = 2; $order->update(); } Link to comment Share on other sites More sharing options...
d33x Posted July 27, 2016 Author Share Posted July 27, 2016 No he entendido del todo lo que quieres hacer pero en principio creo que seria algo mas simple $id_cart = (int)$params["cart"]->id; $order = $params['order']; $order->id_cart = $id_cart; if ($order->id_cart){ $order->gift = 2; $order->update(); } Voy a probarlo en seguida pero me vuelvo a explicar visto que no me he explicado bien. Yo necesito que cuando una persona haga un pedido (o cuando se inserte un order, da igual) en ese mismo momento (despues de que se haya insertado el order en la tabla ps_order) actualizar un valor en la tabla de ese mismo order. Hago una simulación: Se hace un pedido. Se inserta el pedido en sus correspondientes tablas. Justo en ese momento (después de que el pedido se haya añadido el order con éxito) actualizo un valor de la tabla ps_order de ese mismo order que se ha añadido. Se que el hook es hookActionValidateOrder. Imaginate... El order se añade automáticamente con la referencia "DDDDD0" pues justo en ese momento, una vez el order este insertado, actualizar la referencia a "XXXXXX0". ¿Me he explicado mejor? Muchisimas gracias señor @ventura Link to comment Share on other sites More sharing options...
d33x Posted July 27, 2016 Author Share Posted July 27, 2016 No he entendido del todo lo que quieres hacer pero en principio creo que seria algo mas simple $id_cart = (int)$params["cart"]->id; $order = $params['order']; $order->id_cart = $id_cart; if ($order->id_cart){ $order->gift = 2; $order->update(); } No realiza ninguna actualización de la tabla gift del order que se inserta en ese momento. De echo hasta lanza error 500. Link to comment Share on other sites More sharing options...
d33x Posted July 27, 2016 Author Share Posted July 27, 2016 @ventura @Gabriel Perez Ya logre hacerlo funcionar. Muchísimas gracias por el tiempo dedicado! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now