IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

REPOSITORY : Récupérer le résultat d'une requête déjà formaté en JSON


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut REPOSITORY : Récupérer le résultat d'une requête déjà formaté en JSON
    Bonjour,

    Afin de pouvoir récupérer des données ayant un nombre de colonne inconnu, je souhaiterais récupérer, avec ma Repository Symfony, le résultat d'une requête SQL qui est déjà formaté en JSON.

    Résultat de ma requête SQL
    {"correction_action":"TO_DEFINE","order_distribution":"01160621:1","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"43","champs06":"01160621B"}
    {"correction_action":"TO_DEFINE","order_distribution":"02160621:2","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"9","champs06":"02160621B"}
    {"correction_action":"TO_DEFINE","order_distribution":"44684594:1","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"10","champs06":"44684594C"}
    {"correction_action":"TO_DEFINE","order_distribution":"44684594:2","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"1100","champs06":"44684594C"}
    {"correction_action":"TO_DEFINE","order_distribution":"44684626:1","items":"5567359","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"50","champs06":"44684626C"}
    Lorsque j'effectue la récupération de cette requête depuis mon repository, le résultat est transformé en array
    ["{"correction_action":"TO_DEFINE","order_distribution":"01160621:1","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"43","champs06":"01160621B"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"02160621:2","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"9","champs06":"02160621B"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"44684594:1","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"10","champs06":"44684594C"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"44684594:2","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"1100","champs06":"44684594C"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"44684626:1","items":"5567359","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"50","champs06":"44684626C"}"]
    REPOSITORY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
        public function rep_gettable_lasteventsdetails_json_data(
            string $var_id ,int $var_id_app,string $var_control_description,string $var_control_errors
        )
        {
            $session_user_ldap = $this->session->get('user_ldap');
            $conn = $this->em->getConnection();
            $sql = "
                    SELECT  *
                    FROM    f_gettable_lasteventsdetails_json_data(:var_id,:var_id_app,:var_user,:var_control_description,:var_control_errors)
                    WHERE	1=1
                    limit 5
                    ";
            $stmt  = $conn->prepare($sql);
            $stmt ->executeQuery(['var_id' => $var_id,'var_id_app' => $var_id_app,'var_user' => $session_user_ldap,'var_control_description' => $var_control_description,'var_control_errors' => $var_control_errors]);
            $result = $stmt->fetchFirstColumn();
            return $result;

    Comment puis je faire pour ne pas transformer le format du résultat de ma requête, et donc conserver le format JSON généré par la requête.

    Merci

  2. #2
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    tu peux utiliser la methode getOneOrNullResult () sur $result
    ou tout simplement faire un return $result[0]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut
    Citation Envoyé par -Nikopol- Voir le message
    tu peux utiliser la methode getOneOrNullResult () sur $result
    ou tout simplement faire un return $result[0]
    Bonjour,
    Cela ne réponds pas à mon besoin qui est de récupérer la totalité des lignes de la requête, mais sans modifier son format.
    En effet, le résultat de ma requête SQL est au format JSON.
    Lorsque je récupère ce résultat via symfony, il transforme se résultat en array, chose que je ne veux pas.

  4. #4
    Expert confirmé

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Billets dans le blog
    5
    Par défaut
    ton json est simplement mis dans un tableau, si tu ne demande qu'un resultat il ne sera pas dans un tableau
    et si je regarde la structure de ton return le result[0] te renverra ton json

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut
    Citation Envoyé par -Nikopol- Voir le message
    ton json est simplement mis dans un tableau, si tu ne demande qu'un resultat il ne sera pas dans un tableau
    et si je regarde la structure de ton return le result[0] te renverra ton json
    Merci, je n'avais pas compris sur le coup, mais je visualise ta suggestion, cependant avec le $result[0], cela n'affiche que la première ligne du résultat de la requête.

    ==> return $result;
    ["{"correction_action":"TO_DEFINE","order_distribution":"01160621:1","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"43","champs06":"01160621B"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"02160621:2","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"9","champs06":"02160621B"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"44684594:1","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"10","champs06":"44684594C"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"44684594:2","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"1100","champs06":"44684594C"}"
    ,"{"correction_action":"TO_DEFINE","order_distribution":"44684626:1","items":"5567359","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"50","champs06":"44684626C"}"]
    ==> return $result[0];
    "{"correction_action":"TO_DEFINE","order_distribution":"01160621:1","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"43","champs06":"01160621B"}"

  6. #6
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 441
    Par défaut
    Bonjour,

    Quel est le résultat json attendu au final ?

    Puisque les données sont déjà enregistrées au format json en bdd, la première idée qui me vient en PHP est d'utiliser json_decode sur chaque élément du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    $jsonResults = [
        '{"correction_action":"TO_DEFINE","order_distribution":"01160621:1","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"43","champs06":"01160621B"}',
        '{"correction_action":"TO_DEFINE","order_distribution":"02160621:2","items":"5611838","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"9","champs06":"02160621B"}',
        '{"correction_action":"TO_DEFINE","order_distribution":"44684594:1","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"10","champs06":"44684594C"}',
        '{"correction_action":"TO_DEFINE","order_distribution":"44684594:2","items":"1047619","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"1100","champs06":"44684594C"}',
        '{"correction_action":"TO_DEFINE","order_distribution":"44684626:1","items":"5567359","champs01":null,"champs02":null,"champs03":null,"champs04":"110","champs05":"50","champs06":"44684626C"}'
    ];
     
    $decodedResults = array_map('json_decode', $jsonResults);
     
    echo json_encode($decodedResults, JSON_PRETTY_PRINT);
    Avec Symfony, peut-être voir si le service Serializer ne serait pas plus adapté :
    https://symfony.com/doc/current/cont...-json-response

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer le résultat d'une requête UNION
    Par brazza dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/01/2007, 21h33
  2. [JTable] Récupérer le résultat d'une requête SQL
    Par malik1982 dans le forum Composants
    Réponses: 10
    Dernier message: 08/07/2006, 19h52
  3. Réponses: 3
    Dernier message: 16/10/2005, 11h53
  4. récupérer le résultat d'une requête sql dans un edit
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2005, 14h07
  5. Réponses: 7
    Dernier message: 30/06/2005, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo