logo Homepage
+  NewbieContest
Username:
Password:
  Voir les messages
Pages: [1]
1  Programmation / Langages Web / problème avec doctrine dans symfony. le: 28 Juillet 2014 à 15:51:04
Bonjour a tous,

J'ai un problème avec les données renvoyées par une requête pour la génération d'un formulaire.

En détail:

J'ai des Entités nommées AdmParamDonnee correspondant à des pays, risques, sinistres, ... en fonction de leur liste

exemple: les admParamDonnees qui appartiennent a la liste 12 sont tous des pays.

On associe des libelles (autre entité nommée AdmParamDonneeLibelle) à ces admParamDonnees en fonction de la langue et éventuellement du client si il souhaite voir un libelle plus parlant .(dans se cas on crée un nouveau libelle liée au client et a l'entite admparamdonnee).

Voila pour la théorie, en pratique je suis en train de crée un formulaire de clients afin de leurs associée des listes d'admParamDonnees et des admParamDonnees (en fonction des listes sélectionnées).

Mon problème est que ma requêtes pour générer les champs d'admParamDonnee ne me renvois pas les bons libelles associés, je décide donc d'afficher la requête exécuté par Doctrine afin de l'exécuter sur pgadmin et la pgadmin me renvois bien les admParamDonnees associé aux bon libelles ....

mon formbuilder:


    
Code:
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        
        $em = $this->em;
        $user = $this->security->getToken()->getUser();
        $currentUserClientLink = $user->getAdmLienUtilisateurClientCourant();
        $client = $builder->getData();
        $lang = $currentUserClientLink->getSadmLangue();      
        $listeParamListe = $options['listeParamListe'];
        
        $builder
        ->add('nom')
        ->add('chemin')
        ->add('langues',"genemu_jqueryselect2_entity", array(
            "class" => "DeltaRMAdminBundle:SadmLangue",
            'multiple'=> true,
            'required' => false,
            'query_builder' => function (EntityRepository $er) use ($options) {
              return $er->createQueryBuilder('u')
              ->select("u")
              ;
          }, ))
/*
        ->add('admLiensParamDonneeClient', "genemu_jqueryselect2_entity", array(
            "class" => "DeltaRMAdminBundle:admLienParamDonneeClient",
            'multiple'      => true,
            'required' => false
          )
        )*/
        ->add('filtres', "genemu_jqueryselect2_entity", array(
            "class" => "DeltaRMAdminBundle:sadmStructureAttribut",
            'multiple'=> true,
            'required' => false,
            'query_builder' => function (EntityRepository $er) use ($options) {
              return $er->createQueryBuilder('u')
              ->select("u")
              ->andWhere('u.type = :type')
              ->setParameter('type', "FILTRE")
              ;
          }, )
        )
        ->add('affichages', "genemu_jqueryselect2_entity", array(
            "class" => "DeltaRMAdminBundle:sadmStructureAttribut",
            'multiple'=> true,
            'required' => false,
            'query_builder' => function (EntityRepository $er) use ($options) {
              return $er->createQueryBuilder('u')
              ->select("u")
              ->andWhere('u.type = :type')
              ->setParameter('type', "AFFICH")
              ;
          }, )
        )
        ->add('admParamListes','genemu_jqueryselect2_entity', array(
            "class" => "DeltaRMAdminBundle:AdmParamListe",
            'multiple'=> true,
            'required' => false,
            'query_builder' => function (EntityRepository $er) use ($options) {            
              return $er->createQueryBuilder('u')
              ->select('u, ul')
              ->leftJoin('u.admParamListeLibelles', "ul")
              ->andWhere('u.supDate IS NULL')
              ->andWhere('u.reference IS NULL')
              ->andWhere('ul.supDate IS NULL')
              ->andwhere('u.id <> 12')
              ->andwhere('u.id <> 21')
              ->andwhere('u.id <> 17')
              ->andwhere('u.id <> 22')
              ->addOrderBy('ul.libelle')            
              ;
          }, ))
        ->add(
            'pays','genemu_jqueryselect2_entity', array(
                'class' => 'DeltaRMAdminBundle:AdmParamDonnee',
                'multiple'=> true,
                'required' => false,
                'query_builder' => $em->getRepository('DeltaRMAdminBundle:AdmParamDonnee')->createQueryBuilderCompleteParamDonnesOfListeId(12, $lang, $client->getId())
            )
        );
        /* génère les champs pour les listes d'admParamDonnees*/
        foreach ($listeParamListe as $paramListe)
        {    
            $id = $paramListe->getId();
            $name = $paramListe->getCurrentAdmParamListeLibelle()->getLibelle();
            
            $builder->add(
                'listeParam'.$id,'genemu_jqueryselect2_entity', array(
                    'class' => 'DeltaRMAdminBundle:AdmParamDonnee',
                    'multiple'=> true,
                    'required' => false,
                    'query_builder' => $em->getRepository('DeltaRMAdminBundle:AdmParamDonnee')->createQueryBuilderCompleteParamDonnesOfListeId($id, $lang, $client->getId()),
                    'attr' => array('data-id' => $id,
                                    'data-name' => $name)
                ));          
        }
    }



voici la méthode exécutée pour la requête:


Code:
public function createQueryBuilderParamDonnesOfListeId($listeId, $sadmLangue, $client)
    {
        if (!$client)
            throw new \Exception("*Erreur client non definit pour la fonction createQueryBuilderParamDonnesOfListeId*");
        $queryBuilder = $this->getEntityManager()
            ->createQueryBuilder();
        $queryBuilder
            ->select('prm_don, pdl, apdlc')
            ->from('DeltaRMAdminBundle:AdmParamDonnee', 'prm_don')
            ->leftJoin("prm_don.admParamDonneeLibelles", "pdl", "WITH", "pdl.supDate is NULL and pdl.reference is NULL and pdl.sadmLangue = :sadmLangue and pdl.sadmClient = :client")
            ->leftJoin("prm_don.admLienParamDonneeClients", "apdlc")
            ->where('prm_don.admParamListe = :listeId')
            ->andWhere("prm_don.supDate IS NULL")
            ->andWhere("prm_don.reference IS NULL")
            ->andWhere("apdlc.supDate IS NULL")
            ->andWhere("apdlc.reference IS NULL")
            ->andWhere("apdlc.sadmClient = :client")
            ->setParameter('listeId', $listeId)
            ->setParameter('sadmLangue', $sadmLangue)
            ->setParameter('client', $client)
            ->orderBy('apdlc.ordre')
            ->addOrderBy('pdl.libelle');
        $result = $queryBuilder->getQuery()->getResult();
        
        return $queryBuilder;
    }

Lorsque j'affiche les données récupérées pour la liste 34 (c'est la première liste générée par ma boucle) avec ce code:


Code:
$query = $em->getRepository('DeltaRMAdminBundle:AdmParamDonnee')->createQueryBuilderCompleteParamDonnesOfListeId(34, $lang, $client->getId());
$results = $query->getQuery()->getResult();
foreach($results as $result)
{
    echo 'admParamDonne : <br>';
    var_dump(gettype($result));
    var_dump(get_class($result));
    var_dump('id: '.$result->getId());
    echo 'libelles : <br>';
    foreach($result->getAdmParamDonneeLibelles() as $libelle)
    {
       var_dump(gettype($libelle));
       var_dump('id: '.$libelle->getId());
    }
    echo '-----------------------------------<br>';
}


j'obtiens:


admParamDonne :
string 'object' (length=6)
string 'DeltaRM\AdminBundle\Entity\AdmParamDonnee' (length=41)
string 'id: 519' (length=7)
libelles :
string 'object' (length=6)
string 'id: 24099' (length=9)
string 'object' (length=6)
string 'id: 5115' (length=8)
string 'object' (length=6)
string 'id: 24101' (length=9)
-----------------------------------
admParamDonne :
string 'object' (length=6)
string 'DeltaRM\AdminBundle\Entity\AdmParamDonnee' (length=41)
string 'id: 351' (length=7)
libelles :
-----------------------------------
admParamDonne :
string 'object' (length=6)
string 'DeltaRM\AdminBundle\Entity\AdmParamDonnee' (length=41)
string 'id: 352' (length=7)
libelles :
-----------------------------------
admParamDonne :
string 'object' (length=6)
string 'DeltaRM\AdminBundle\Entity\AdmParamDonnee' (length=41)
string 'id: 354' (length=7)
libelles :
-----------------------------------
admParamDonne :
string 'object' (length=6)
string 'DeltaRM\AdminBundle\Entity\AdmParamDonnee' (length=41)
string 'id: 353' (length=7)
libelles :
-----------------------------------

on vois ici que j'obtiens le libelle d'id 24099 soit un libelle qui possède un id de référencement (qui ne devrai donc pas être la car dans ma requête j'ai 'and pdl.reference is NULL').

lorsque j'exécute pour connaitre la requête exécuté par doctrine:

Code:
echo ''.$query->getQuery()->getSQL().'<br>';
var_dump($query->getQuery()->getParameters());
j'obtiens la requête suivante:


Code:
SELECT a0_.prm_don_id AS prm_don_id0, a0_.prm_don_creat_date AS prm_don_creat_date1, a0_.prm_don_modif_date_deb AS prm_don_modif_date_deb2, a0_.prm_don_modif_date_fin AS prm_don_modif_date_fin3, a0_.prm_don_sup_date AS prm_don_sup_date4, a0_.prm_don_ordre AS prm_don_ordre5, a1_.pdl_id AS pdl_id6, a1_.pdl_creat_date AS pdl_creat_date7, a1_.pdl_modif_date_deb AS pdl_modif_date_deb8, a1_.pdl_modif_date_fin AS pdl_modif_date_fin9, a1_.pdl_sup_date AS pdl_sup_date10, a1_.pdl_libelle AS pdl_libelle11, a2_.lpdc_id AS lpdc_id12, a2_.lpdc_creat_date AS lpdc_creat_date13, a2_.lpdc_modif_date_deb AS lpdc_modif_date_deb14, a2_.lpdc_modif_date_fin AS lpdc_modif_date_fin15, a2_.lpdc_sup_date AS lpdc_sup_date16, a2_.lpdc_ordre AS lpdc_ordre17, a0_.prm_don_creat_utl_id AS prm_don_creat_utl_id18, a0_.prm_don_modif_utl_id AS prm_don_modif_utl_id19, a0_.prm_don_sup_utl_id AS prm_don_sup_utl_id20, a0_.prm_don_id_ref AS prm_don_id_ref21, a0_.prm_don_prm_lst_id AS prm_don_prm_lst_id22, a1_.pdl_creat_utl_id AS pdl_creat_utl_id23, a1_.pdl_modif_utl_id AS pdl_modif_utl_id24, a1_.pdl_sup_utl_id AS pdl_sup_utl_id25, a1_.pdl_id_ref AS pdl_id_ref26, a1_.pdl_prm_don_id AS pdl_prm_don_id27, a1_.pdl_lan_id AS pdl_lan_id28, a1_.pdl_cli_id AS pdl_cli_id29, a2_.lpdc_sup_utl_id AS lpdc_sup_utl_id30, a2_.lpdc_prm_don_id AS lpdc_prm_don_id31, a2_.lpdc_cli_id AS lpdc_cli_id32, a2_.lpdc_creat_utl_id AS lpdc_creat_utl_id33, a2_.lpdc_id_ref AS lpdc_id_ref34, a2_.lpdc_modif_utl_id AS lpdc_modif_utl_id35
 
FROM admin.adm_param_donnee a0_
 
LEFT JOIN admin.adm_param_donnee_libelle a1_ ON a0_.prm_don_id = a1_.pdl_prm_don_id AND (a1_.pdl_sup_date IS NULL AND a1_.pdl_id_ref IS NULL AND (a1_.pdl_cli_id = ? OR a1_.pdl_cli_id IS NULL))
 
LEFT JOIN admin.adm_lien_param_donnee_client a2_ ON a0_.prm_don_id = a2_.lpdc_prm_don_id AND (a2_.lpdc_cli_id = ? AND a2_.lpdc_sup_date IS NULL AND a2_.lpdc_id_ref IS NULL)
 
WHERE a0_.prm_don_prm_lst_id = ? AND a0_.prm_don_sup_date IS NULL AND a0_.prm_don_sup_date IS NULL
 
ORDER BY a1_.pdl_lan_id ASC, a2_.lpdc_ordre ASC, a1_.pdl_libelle ASC

avec les paramètre suivant:

Code:
object(Doctrine\Common\Collections\ArrayCollection)[8347]
  private '_elements' =>
    array (size=2)
      0 =>
        object(Doctrine\ORM\Query\Parameter)[8376]
          private 'name' => string 'listeId' (length=7)
          private 'value' => int 34
          private 'type' => string 'integer' (length=7)
      1 =>
        object(Doctrine\ORM\Query\Parameter)[8377]
          private 'name' => string 'client' (length=6)
          private 'value' => int 2
          private 'type' => string 'integer' (length=7)


et lorsque je l'exécute sur pgAdmin :

imp écran ici:
http://sdz-upload.s3.amazonaws.com/prod/upload/Capture%20d%E2%80%99%C3%A9cran%202014-07-28%20%C3%A0%2017.01.311.png
prm_don_id est l'id des admParamDonnees, pdl_id est l'id des admParamDonneLibelles et pdl_Libelle le texte affiché.


j'ai pour l'admParamDonnée d'id 519:

    -libelle d'id 5072

    -libelle d'id 5115

Qui sont les libelles que j'aimerai afficher.

Si quelqu'un vois ce qui se passe, pourquoi la Doctrine ne me renvois pas les bonnes info alors que  la requête générée fait exactement ce que j'attend, cela pourrai m'éviter une calvitie prématuré du à l'arrachement de mes cheveux....

Si vous voulez plus de code je suis disposé a en mettre.

D'avance merci
2  Challenges / Aide Javascript/Java/HTML / Re : JS - Game Over le: 06 Août 2013 à 10:35:30
Bonjour,
Le problème, pour moi, sur ces épreuves n'était pas javascript bien que je n'en avais pratiquement jamais fait avant.
Toutes les épreuves javascript peuvent se validée avec uniquement une bonne lecture du code, savoir chercher les méthodes et fonctions utilisé.
Si tu maitrise d'autre langages cela va t'aider.

Pour bien commencer, demande toi déjà ce que tu veux faire , ou veux tu aller.
Fait attention au conditions des boucles et des if.
Toujours faire attention aux variables et leur contenu.
Tout cela va t'aider à structurer ta réflexion afin d'entrevoir une solution.
N'oublie pas qu'il n'y a jamais une unique solution à un problème  et que prendre du recule sur un problème permet une meilleur ouverture d'esprit.
N'hésite pas à faire des tests en local car le javascript ne demande qu'un navigateur pour être exécuté.

Par contre si tu n'as jamais fait d'autre langage de programmation les tutos du siteduzero sont très biens, très pédagogues.
3  Challenges / Aide Hacking / Re : Hacking - Upload I le: 11 Août 2012 à 13:26:55
Bonjour,
Je confirme que hier j'avais le même message que toi.
Sinon, je dit ça mais je pense que je ne suis pas le premier, éditez vos messages plutôt que de faire un double post afin de faciliter la lisibilité du forum et le travaille des modos.

Coolswing
4  Challenges / Aide Javascript/Java/HTML / Re : JS - Yet Another Java Challenge le: 16 Mars 2012 à 15:54:01
j'ai pas envie que le forum soit dégueulasse.

Je suis d'accord avec toi mais on est pas tous bon en orthographe moi surtout, après je fait quand même l’effort de me relire même si je laisse passer 2-3 fautes.
Après si j'avais écris en sms j'aurai compris de recevoir un avertissement.

Après, si tu as un problème contre moi
Non j'ai aucun problème avec toi, je ne te connais pas mais c'est juste que depuis quelque jours j’essaie d'être actif sur le forum et là d'aider ou plutôt de motiver quelqu'un sur ce challenge et pouf <modérateur><?php echo $rage ?></modérateur> non mais sérieux j'ai pris ça pour un "bonjour ferme la s'il te plait".

La remarque sur le nombre de caractères était adressée à pokertour, elle n'était pas pour toi.
Je sais bien....

Enfin bref je propose d’arrêter là le débat, sans rancune et au plaisir
5  Challenges / Aide Javascript/Java/HTML / Re : JS - Yet Another Java Challenge le: 15 Mars 2012 à 11:53:24
<modérateur>
J'ai mal au coeur ! Et au bras gauche ! Oups, c'est une attaque cardiaque ! J'en profite avant de mourir bêtement pour vous engueuler. LES FAUTES !!! Ok, j'ai réussi à lire. Mais ça ne change rien. Rien que le premier mot. "Bonjours". Ah ben oui tiens, mettons un s ! T'as oublié un h aussi je crois, c'est hbonjours je crois bien.
Je passe le reste, mais c'est vraiment pas mieux.
On est pas sur comment ça marche ici.

Ah et puis les demandes d'aide du genre le nombre de caractères, c'est pas la peine.
</modérateur>

Enjoy

The lsd


Tu m'explique l’intérêt de ton post? On est pas sur http://www.timbresdelorthographe.com j'écris pas en sms, j'ai de gros problème d'orthographe et je le sais depuis un moment. Si tu savais déjà le nombre de fautes que j'ai retiré depuis que j'ai posté le message....
Mais bon pour en revenir au sujet principal plutôt que de flooder (oui the lsd ton post c'est du flood car il est hors sujet)

Non je ne peux pas donner le nombre de caractères.
Si tu cherche "cryptage" sur google je suis sur que tu trouvera quelque chose d’intéressant et utile sur les 2 premières pages.
6  Challenges / Aide Javascript/Java/HTML / Re : JS - Yet Another Java Challenge le: 13 Mars 2012 à 11:31:34
quelqu'un peut m'aider donner des indices sur la façon de le décrypter ?

Bonjours,
Je ne vais te donner que quelque conseils valable pour toute les épreuves et surtout celle-ci:
 Analyse bien ce qui t'ai demandé, analyse bien ce qui t'a était donné, réfléchi et prend des pauses si tu sature. Renseigne toi sur les systèmes de cryptage.
Moi aussi j'ai bloqué dessus mais au final c'est assez simple et je suis finalement content d'avoir trouvé par moi même sans aucune aide et c'est pourquoi je ne dirais rien de plus car c'est déjà suffisant.
Sinon je peu te conseiller de faire les autres challenges de java/javascript qui je trouve sont très plaisant à faire et mis dans un ordre logique de simplicité afin de te faire progresser.

7  Challenges / Aide Javascript/Java/HTML / Re : JS - Yet Another Java Challenge le: 05 Mars 2012 à 14:54:17
Bonjours à tous,
Cela faisait un moment que j'hésitai a me lancer sur ce challenge et bien voila c'est fait... et je bloque.
je trouve un mdp cohérent mais "Eh non..."
Comme j'ai peur de trop en dire, puis-je par MP contacter quelqu'un pour me dire si oui ou non ce que je trouve sert au moins à quelque chose?

Edit: je me suis casser le ... pour rien c'est bon j'ai trouvé
8  Challenges / Aide Hacking / Re : Hacking - Galerie d'images le: 13 Janvier 2012 à 14:57:59
Bonjours a tous,
cela doit être mon 1er post, je suis en train de regarder cette épreuve et franchement le "il faut quand même pas exagérer" ma fait beaucoup rire, je ne m'attendais pas à un résultat xD.
épreuve validée
Pages: [1]