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 :

symfony 2 et procedure stockée [2.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut symfony 2 et procedure stockée
    Bonjour a tous!
    j'aurai une petite question.

    Je suis sur symfony 2 et je dois faire appel a une procedure stockée.
    Aprés avoir chercher en vain je viens vers vous!

    J'ai vu que lon pouvait utiliser rawsql mais nous ne pouvons pas installer l'api (demande de notre chef de projet).

    auriez vous un exemple d'appel de procédure stockée?ou le nom du methode ou class qui me permettrai de faire cela?

    je vous remercie

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    rawsql ? c'est toujours accessible via Doctrine

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    rawsql ? c'est toujours accessible via Doctrine
    Bonjour
    et merci pour ton aide

    Notre chef de projet est contre l'installation de ce package.

    Ya til une possibilité d'appeler une procedure sans rawsql?

    Comment cela se passe avec rawsql?

    merci pour beaucoup!

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Je vois pas de quel package tu parles, tout est déjà dans doctrine/dbal pas besoin d'autre chose

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Je vois pas de quel package tu parles, tout est déjà dans doctrine/dbal pas besoin d'autre chose
    Voila ce que m'affiche symfony:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Class 'Xmd\PubBundle\Repository\Doctrine_RawSql' not found in C:\wamp\www\webservice\src\Xmd\PubBundle\Repository\IntermTRepository.php on line 16
    et dans mon repository :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function listproc()
    	{
    		$q = new Doctrine_RawSql();
    		$res = $q->select("CALL lsatest (12)");
    	}
    Merci

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est une lib Doctrine 1 ça, et ça n'as rien a faire dans Repository ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function listProc()
    {
        return $this->getEntityManager()
                    ->createNativeQuery('CALL lsatest (12)')
                    ->getResult();
    }

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est une lib Doctrine 1 ça, et ça n'as rien a faire dans Repository ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function listProc()
    {
        return $this->getEntityManager()
                    ->createNativeQuery('CALL lsatest (12)')
                    ->getResult();
    }
    Et je dois faire comment?

    Merci

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par zizouette Voir le message
    Et je dois faire comment?

    Merci
    juste comme ça ...

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    juste comme ça ...
    je l'ai mis dans le controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $repository=$this->getDoctrine()
    		->getEntityManager()
                    ->createNativeQuery('CALL lsatest (12)')
    		->getResult();
    J'ai limpression que la "createNativeQuery" est inconnue chez moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur :
    Catchable Fatal Error: Argument 2 passed to Doctrine\ORM\EntityManager::createNativeQuery() must be an instance of Doctrine\ORM\Query\ResultSetMapping, none given, called in C:\wamp\www\webservice\src\Xmd\PubBundle\Controller\IntermTController.php on line 22 and defined in C:\wamp\www\webservice\vendor\doctrine\lib\Doctrine\ORM\EntityManager.php line 293

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Pourquoi avoir mis dans ton Controller alors que tu l'avais mis dans ton Repository ???

    pour le reste tout est dans la doc
    http://docs.doctrine-project.org/en/...mappingbuilder

    sinon fais juste createQuery

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Pourquoi avoir mis dans ton Controller alors que tu l'avais mis dans ton Repository ???

    pour le reste tout est dans la doc
    http://docs.doctrine-project.org/en/...mappingbuilder

    sinon fais juste createQuery
    Désolé pour la balise [code]

    je l'ai remis dans le repository mais toujours la meme erreur.

    Et pour ce qui est de createQuery j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Syntax Error] line 0, col 0: Error: Expected SELECT, UPDATE or DELETE, got 'CALL'
    Je vais lire la doc.

    Merci

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    dans le pire des cas fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function listProc()
    {
        return $this->getConnection()
                    ->query('CALL lsatest (12)')
                    ->fetchAll();
    }

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    dans le pire des cas fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function listProc()
    {
        return $this->getConnection()
                    ->query('CALL lsatest (12)')
                    ->fetchAll();
    }
    voici ce que j'ai dans le controller
    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
    19
     
    public function query_monCA_AA1PbmoAction($clb_idc,$annee,$anneeMoins1,$format)
    {
    		$bdd 	= $this->container->getParameter('bdd');
     
     
    		$repository=$this->getDoctrine()
    		->getRepository('XmdPubBundle:IntermT', $bdd['bddDefaut'])
    		->listproc();
     
     
    	$serializer = $this->container->get('serializer');
    	$ret = $serializer->serialize($a, 'xml');
     
     
     
    		return $this->render('XmdPubBundle:Default:index.html.twig', array('nbrResult' =>10,'ret' => $ret) );
     
    }
    dans le repository :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public function listproc()
    	{
    		return $this->getConnection()
                    ->query('CALL lsatest (12)')
                    ->fetchAll();	
    	}

    Voici l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Undefined method 'getConnection'. The method name must start with either findBy or findOneBy!
    J'essai de faire d'autre test.Mais je comprend pas l'erreur!

    Pour appeler la procedure c'est bien "Call" que l'on utilise?

    Merci pour l'aide

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    comme ça alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function listProc()
    {
        return $this->getEntityManager()
                    ->getConnection()
                    ->query('CALL lsatest (12)')
                    ->fetchAll();
    }

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    comme ça alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function listProc()
    {
        return $this->getEntityManager()
                    ->getConnection()
                    ->query('CALL lsatest (12)')
                    ->fetchAll();
    }
    Ja'ai fait comme tu m'a dit mais rien.
    j'ai voulu faire un var_dump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	public function listproc()
    	{
    	//	$bdd 	= $this->container->getParameter('bdd');
     
    		$a= $this->getEntityManager()
                    ->getConnection()
                    ->query('CALL lsatest (12)')
                    ->fetchAll();
     
    		var_dump($a);
    		exit;
    	}
    }
    il s'affiche "null" et dans les instances la procedure ne se lance pas ,donc sa marche pas.

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a quoi dans XmdPubBundle:Default:index.html.twig ? pourquoi l'action s’appelle query_monCA_AA1Pbmo alors que le template s’appelle index, j'image que le route a un nom différent ...

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    y'a quoi dans XmdPubBundleefault:index.html.twig ? pourquoi l'action s’appelle query_monCA_AA1Pbmo alors que le template s’appelle index, j'image que le route a un nom différent ...
    en faite je fais des webservices.

    XmdPubBundle ne contient que des url pour faire des tests pour appeler mes webservice avec des parametres en GET.

    query_monCA_AA1Pbmo est le nom de mon webservice.

    a la place de la procedure j'ai fait un essai avec un select normal et cela fonctionne, cela ne marche pas simplement avec la procedure stockée!

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Quand je fais le select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public function listproc()
    	{
    	//	$bdd 	= $this->container->getParameter('bdd');
     
    		$a= $this->getEntityManager()
                    ->getConnection()
                    ->query('select * from collab_t where collab_id = 12')
                    ->fetchAll();
     
    		var_dump($a);
    		exit;
    	}
    cela fonctionne trés bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array
      0 => 
        array
          'collab_id' => string '12' (length=2)
          0 => string '12' (length=2)
          'soc_id' => string '1' (length=1)
          1 => string '1' (length=1)
    Le soucis vient de l'appel de la procedure

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    fais comme ça alors, mais après tout ça c'est la base de PDO donc si tu connais pas PDO ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function listProc($value)
    {
        $stmt = $this->getEntityManager()
                     ->getConnection()
                     ->prepare('CALL lsatest(?)');
     
        $stmt->bindParam(1, $value, \PDO::PARAM_INT|\PDO::PARAM_INPUT_OUTPUT); 
        $stmt->execute();
     
        return $value;
    }

  20. #20
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par zizouette Voir le message
    query_monCA_AA1Pbmo est le nom de mon webservice.
    c'est plus a mettre dans ton Route, c'est franchement pas terrible comme non de methode

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ecriture d'une procedure stockée XP
    Par WOLO Laurent dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/07/2003, 13h09
  2. Réponses: 1
    Dernier message: 04/06/2003, 11h48
  3. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47
  4. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44
  5. procedure stockée dans un dbbatch
    Par pram dans le forum XMLRAD
    Réponses: 4
    Dernier message: 07/02/2003, 16h35

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