50
loading...
This website collects cookies to deliver better user experience
factura
, detalle_factura
, inventario
, producto
, etc. Al enviar la informaciónfactura
con los datos de la cabecera, varios registros de detalle_factura
inventario
de cada producto
.<?php
// ... solo el código que interesa para el ejemplo
$factura = new Factura($datosDeFactura);
$factura->save();
foreach ($detalleDeFactura as $detalle) {
$detalle = new DetalleFactura($detalle);
$detalle->factura = $factura;
$detalle->producto = Producto::findOrFail($detalle['producto_id']);
$detalle->save();
$inventario = new Inventario($detalle);
$inventario->producto = Producto::findOrFail($detalle['producto_id']);
$inventario->save();
}
producto_id
no está en la tabla de productos.BEGIN;
INSERT INTO `factura` (numero, fecha, estado)
VALUES ('001-001-1000', '2021-05-27', 'Facturada');
INSERT INTO `detalle_factura` (item, producto_id, cantidad, precio)
VALUES ('1', 2000, 1, 500);
COMMIT;
--- o
ROLLBACK;
<?php
// ... solo el código que interesa para el ejemplo
try {
$conexionBd->begin();
$factura = new Factura($datosDeFactura);
$factura->save();
foreach ($detalleDeFactura as $detalle) {
$detalle = new DetalleFactura($detalle);
$detalle->factura = $factura;
$detalle->producto = Producto::findOrFail($detalle['producto_id']);
$detalle->save();
$inventario = new Inventario($detalle);
$inventario->producto = Producto::findOrFail($detalle['producto_id']);
$inventario->save();
}
$conexionBd->commit();
}
catch (\Exception $e)
{
$conexionBd->rollback();
throw $e;
}