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 :

Pomm et retour SQL


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 89
    Points : 56
    Points
    56
    Par défaut Pomm et retour SQL
    Bonjour,

    je débute sur Symfony et j'utilise Pomm à la place de Doctrine.

    Je souhaite récupérer le code retour d'une requête SQL afin de gérer les exceptions, mais je ne trouve pas comment faire.

    J'ai un contrôleur qui appel ma class Model.php de Pomm. Dans cette classe, j'exécute l'import d'un fichier CSV via la commande "COPY" de PostGreSql. La commande fonctionne parfaitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function ImportCSV()
        {
    		$sql = "COPY ..... Import1_2_7_8.csv' DELIMITER ';' CSV HEADER";
     
    		return $this
    			->getSession()
    			->getQueryManager()
    			->query($sql);
        }
    En créant volontairement une erreur dans le nom de la table, j'obtiens bien une SqlException levée par Symfony. J'aimerais capturer cette exception et retourner un message propre.

    Pouvez-vous m'aiguiller svp sur le comment ?

    Merci.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Un try catch ne fais pas l'affaire ?

    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
     
     public function ImportCSV()
        {
    		$sql = "COPY ..... Import1_2_7_8.csv' DELIMITER ';' CSV HEADER";
     
    		try {
            return $this
    			->getSession()
    			->getQueryManager()
    			->query($sql);
    			}catch(Exception $e){
     
    				echo $e->getMesage();
    			}
        }

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2015
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 89
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Un try catch ne fais pas l'affaire ?

    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
     
     public function ImportCSV()
        {
    		$sql = "COPY ..... Import1_2_7_8.csv' DELIMITER ';' CSV HEADER";
     
    		try {
            return $this
    			->getSession()
    			->getQueryManager()
    			->query($sql);
    			}catch(Exception $e){
     
    				echo $e->getMesage();
    			}
        }
    Salut,

    malheureusement non ça ne fonctionne pas.

    Lorsque je teste ma route http://@P:port/nom_de_la_route, j'obtiens tout de suite une erreur Symfony
    Nom : erreur_pomm_symfony.JPG
Affichages : 436
Taille : 34,4 Ko

    Une idée ?

    Merci.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    On va demander à Grégoire (Chanmix51) , le leaddev.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    D'après la doc de pomm SqlException n'est pas une exception de Symfony. Pour personnaliser le message d'erreur liée à cette exception il est possible, dans le bloc catch, de mettre le message d'erreur personnalisée dans le flash messenger puis rediriger vers une page de ton choix . Cette page peut être celle qui affiche les exceptions ou les erreurs:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     public function ImportCSV() {
         $sql = "COPY ..... Import1_2_7_8.csv' DELIMITER ';' CSV HEADER";
         try {
                 return $this->getSession()
    	                     ->getQueryManager()
    			     ->query($sql);
         }catch(\PommProject\Foundation\Exception\SqlException  $e){
                $this->addFlash( 'error', 'Sql Error: An exception occurred while executing  COPY  Import ...');
                return $this->redirectToRoute('mypage');    // redirection vers la route mypage
          }
     }

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    ou un backslash à Exception (dixit quelqu'un )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    catch(\Exception $e){

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    La classe SqlException contient le code SQLState des erreurs SQL et propose même des constantes pour les comparer. Les développeurs peuvent ainsi proposer des conduites alternatives en fonction de l’erreur SQL.

    Amicalement,
    Grégoire

Discussions similaires

  1. Vbscript Gérer retour sql "Aucune ligne sélectionnée"
    Par galene86 dans le forum VBScript
    Réponses: 2
    Dernier message: 10/07/2015, 15h55
  2. tester un fichier vide ou un code-retour SQL="10"
    Par Carlozi dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/05/2008, 15h52
  3. Réponses: 2
    Dernier message: 23/04/2007, 10h41
  4. Code retour SQL*Loader
    Par MoscoBlade dans le forum Oracle
    Réponses: 3
    Dernier message: 20/04/2007, 12h59
  5. Code retour SQL server sous centura
    Par MorbidAngel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 21/09/2005, 14h07

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