Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

189
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda