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 :

Sonata Admin, ajouter des join [2.x]


Sujet :

Symfony PHP

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut Sonata Admin, ajouter des join
    Bonjour,

    Lorsque nous affichons les listes de sonata Admin, on se retrouve avec des requetes que je trouve pas du tout optimisé.
    Conséquence, ca se traine un peu.

    Par exemple :
    Le count initial est fait avec tous les left join(ce qui ne change rien au décompte entre nous) correspondant a tous les filtres disponibles.
    Toutes les requêtes suivantes sont également faite sur ce modèle.


    Mais surtout, pour afficher une information dans la liste, il nous refait une requête si cette info est dans une autre table. Ma liste de ticket qui affiche des pays fais donc une requête par ligne pour m'afficher le pays.

    Connaissez-vous un moyen de forcer sonata a faire un join ? Ou au moins a utiliser le join qu'il fait déjà et a afficher la valeur qu'il a récupéré grâce a lui ?

    Merci,
    Pierre

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Tu peux redéfinir la méthode createQuery de ta classe Admin pour personnaliser la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function createQuery($context = 'list') {
        $query = parent::createQuery($context);
        $query->addSelect('a,b')//tu as dis qu'il y a des leftJoin, mais les données sont elles vraiment récupérées dans le select ?
                ->leftJoin( $query->getRootAlias().'.attributA', 'a')
                ->leftJoin('a.attributB', 'b');
        return $query;
      }

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Désolé, je suis vraiment à la bourre, mais ca fonctionne. J'ai enfin trouvé le temps de mettre ca en place pour optimiser mes requêtes.

    Merci

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/02/2015, 13h05
  2. Réponses: 2
    Dernier message: 27/02/2013, 00h03
  3. [2.x] Validation des champs avec sonata admin
    Par elec1984 dans le forum Symfony
    Réponses: 5
    Dernier message: 06/03/2012, 03h34
  4. [SP-2007] [WSS3] "Ajouter des utilisateurs" invisible pour un admin
    Par linati dans le forum SharePoint
    Réponses: 0
    Dernier message: 04/03/2011, 10h57
  5. permettre à l'admin d'ajouter des champs
    Par jbggg dans le forum Langage
    Réponses: 5
    Dernier message: 24/12/2009, 11h43

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