Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Representa datos en PHP con MYSQL en JSON

Estoy tratando de representar datos en este formato con la base de datos php y mysql que hice, el siguiente formato es lo que necesito obtener:

 { "data": [ { "id": "1", "name": "bad boys", "genres": [ "action", "comedy" ] }, { "id": "2", "name": "star wars", "genres": [ "action", "Sci-Fi" ] }, { "id": "3", "name": "titanic", "genres": "drama" } ] }

pero lo que obtengo es este formato:

 { "data": [ { "id": "1", "name": "bad boys", "genres": "action" }, { "id": "1", "name": "bad boys", "genres": "comedy" }, { "id": "2", "name": "star wars", "genres": "action" }, { "id": "2", "name": "star wars", "genres": "sci-fi" }, { "id": "3", "name": "titanic", "genres": "drama" } ] }

Primero hice una consulta para seleccionar películas de la base de datos:

 public function readMovie() { $query = 'SELECT movie.id, movie.name, genre.name as genre_name FROM movie INNER JOIN movie_genre ON movie_genre.movie_id = movie.id INNER JOIN genre ON genre.id = movie_genre.genre_id'; $stmt = $this->conn->prepare($query); $stmt->execute(); return $stmt; }

luego escribo un código para poder convertirlo en una matriz:

 $database = new Database(); $db = $database->connect(); $movie = new Movie($db); $result = $movie->readMovie(); $num = $result->rowCount(); if($num > 0){ $movies_arr = array(); $movies_arr['data'] = array(); while ($row = $result->fetch(PDO::FETCH_ASSOC)){ extract($row); $movie_item = array( 'id' => $id, 'name' => $name, 'genres' => $genre_name ); array_push($movies_arr['data'], $movie_item); } echo json_encode($movies_arr); } else { echo json_encode( array('message' => 'No Movie Found') ); }

este es mi esquema click aqui

Hice esta api para usarla en la aplicación flutter

si alguien me puede ayudar por favor

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

MySQL 5.7 agregó soporte JSON adecuado, lo que hace posible generar el conjunto de resultados que desea directamente en la base de datos:

 select json_arrayagg( json_object('id', m.id, 'name', m.name, 'genres', x.genres) ) res from movie m inner join ( select movie_id, json_arrayagg(name) genres from movie_genre mg inner join genre g on g.id = mg.genre_id group by movie_id ) x on x.movie_id = m.id

Esto funciona con dos niveles de agregación: la subconsulta asocia una matriz de géneros a cada película, luego la consulta externa crea un objeto para cada película y agrega todos los objetos en una matriz.

Obtiene un conjunto de resultados escalares (1 fila y 1 columna llamada res ), que contiene la carga útil json esperada.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda