Mysql
 sql >> Base de données >  >> RDS >> Mysql

Json de deux tables mysql en PHP

Vous utilisez un très grand nombre de requêtes. Pourquoi ne pas le faire en une seule requête ?

SELECT * FROM `Restaurants` `r`
    LEFT JOIN `Dishes` `d` ON (`r`.`id` = `d`.`f_id`)
ORDER BY `r`.`id` ASC 

puis utilisez le résultat pour créer l'objet JSON.

EDIT Pour faciliter l'itération du résultat, j'ai légèrement changé la requête en :

SELECT 
`r`.`id` as `restaurantId`, 
`r`.`name`, 
`r`.`info`, 
`d`.`id` AS `dishId`,
`d`.`dish`,
`d`.`description`
FROM `restaurants` `r`
    LEFT JOIN `dishes` `d` ON (`r`.`id` = `d`.`f_id`)
ORDER BY `r`.`id` ASC

le résultat ressemblera à ceci :restaurantId, name, info, dishId, dish, description

vous pouvez maintenant itérer le résultat comme ceci :

$jsonArray = array();

foreach ($record as $dishDetails){
    // details of the restaurant
    $jsonArray[$dishDetails['f_id']]['name'] = $dishDetails['name'];
    $jsonArray[$dishDetails['f_id']]['info'] = $dishDetails['info'];

    // build the dishes of the restaurant
    $jsonArray[$dishDetails['f_id']]['dishes'][$dishDetails['dishId']]['dish'] = $dishDetails['dish']
    $jsonArray[$dishDetails['f_id']]['dishes'][$dishDetails['dishId']]['description'] = $dishDetails['description']
}