Hola colegas foreros, tenia tiempo que no andaba por aqui, hoy vuelvo por que no he podido con un problema que tengo para armar un arreglo JSON.
Realmente quisiera armar un JSON dentro de un JSON, no se si esto se pueda, voy a poner un poco de codigo, aqui esta mi metodo:
Código PHP:
private function getListadoProductosCateg($idEmpresa='',$idCategoria)
{
if ($this->request_method() != "GET") {
$this->mostrarRespuesta($this->convertirJson($this->devolverError(1)), 405);
}
if ($idEmpresa !='' && $idCategoria != '') {
$query="SELECT PRO_EMPRESA AS empresa, PRO_CODIGO AS codigo, PRO_NOMBRE AS nombre,
PRO_DESCRI AS descripcion, PRO_TIPPREC AS tipo_precio, PRO_CODUND AS unidad_medida,
PRO_TIPIVA AS tipo_iva, PRO_CATEGORIAS AS categorias, PRO_RUTAIMG AS imagen,
PRO_ACTIVO AS activo_inactivo FROM dnproducto
WHERE PRO_EMPRESA=:empresa AND PRO_CATEGORIAS=:categoria";
$result=$this->_conexion->prepare($query);
$result->execute(array(':empresa'=>$idEmpresa,':categoria'=>$idCategoria));
$num = $this->ContarReg("dnproducto");
if ($num > 0){
while ($filas = $result->fetchAll(PDO::FETCH_ASSOC)) {
$respuesta['estado'] = 'correcto';
$respuesta['code'] = '200';
$respuesta['productos'] = $filas;
$this->mostrarRespuesta($this->convertirJson($respuesta), 200);
}
}
$this->mostrarRespuesta($this->convertirJson($this->devolverError(2)), 400);
}
}
aqui obtengo un array json con los datos del producto (nombre, descripcion, tipo de precio, impuesto etc), ahora bien quiero obtener los precios que tiene cada producto, tomando en cuenta que cada producto puede tener precios desde A-Z.
Existe un campo en la tabla producto que puedo asociar a la tabla de precios y ese campo es PRO_TIPPREC, la consulta que da los precios es asi:
poniendo un codigo cualquiera, yo quisiera que el JSON actual se le agregara un JSON con los precios asociados a X productos.
el resultado del JSON actual es asi:
Código PHP:
Ver original{"estado":"correcto","code":"200","productos":[{"empresa":"000001","codigo":"0000000003","nombre":"Papas","descripcion":"Papas","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"potatoes_saco.jpg","activo_inactivo":"1"},{"empresa":"000001","codigo":"0000000004","nombre":"Cebolla Blanca","descripcion":"Cebolla Blanca","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"cebolla_blanca.jpg","activo_inactivo":"1"},{"empresa":"000001","codigo":"0000000005","nombre":"Cebolla Morada","descripcion":"Cebolla Morada","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"cebolla_morada.jpg","activo_inactivo":"1"},{"empresa":"000001","codigo":"0000000006","nombre":"Zanahoria","descripcion":"Zanahoria","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"zanahoria.jpg","activo_inactivo":"1"}]}
y quisiera que quedara asi (este lo hice a mano):
Código PHP:
Ver original{"estado":"correcto","code":"200","productos":{"":[{"empresa":"000001","codigo":"0000000003","nombre":"Papas","descripcion":"Papas","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"potatoes_saco.jpg","activo_inactivo":"1","precios":[{"PRE_MONTO":"230"}]},{"empresa":"000001","codigo":"0000000004","nombre":"Cebolla Blanca","descripcion":"Cebolla Blanca","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"cebolla_blanca.jpg","activo_inactivo":"1","precios":[{"PRE_MONTO":"230"},{"PRE_MONTO":"120"}]},{"empresa":"000001","codigo":"0000000005","nombre":"Cebolla Morada","descripcion":"Cebolla Morada","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"cebolla_morada.jpg","activo_inactivo":"1"},{"empresa":"000001","codigo":"0000000006","nombre":"Zanahoria","descripcion":"Zanahoria","tipo_precio":"A","unidad_medida":"UND","tipo_iva":"GN","categorias":"14","imagen":"zanahoria.jpg","activo_inactivo":"1"}]}}
Espero puedan ayudarme, se me ha complicado hacer esto y disculpen lo largo del post y espero me haya explicado bien.
Saludos