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 :

Jointure Best Practises [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut Jointure Best Practises
    Comment faire pour récupérer tous les objets ZuluTree appartenant à un ZuluCategory en une seule requête?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ZuluTreeCategory:
      columns:
        tree_id:  { type: integer, primary: true }
        category_id: { type: integer, primary: true }
      relations:
        ZuluCategory:  { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: ZuluCategory}
        ZuluTree: { onDelete: CASCADE, local: tree_id, foreign: id, foreignAlias: ZuluTree }

    J'ai essayé de faire ça dans la classe ZuluTreeCategoryTable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    {
     
     
    		$q = Doctrine_Query::create()
    		->select('j.tree_id,t.*')
    		->from('ZuluTreeCategory j')
    		->innerJoin('j.ZuluTree t')
    		->where('j.category_id = ?', $category->getId());
     
    		return $q->execute();
     
    	}
    Mais, je suppose qu'on peut faire plus simple?

    De plus, si je fais un unit test comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $category = Doctrine_Core::getTable('ZuluCategory')
    	->createQuery()
    	->limit(1)
    	->fetchOne();
     
     
     
    	$t->is(Doctrine::getTable('ZuluTreeCategory')->getTreesForOneCategory($category)->get(0)->getTown(), 'Berlin', 'infos du premier arbre de la category 2');

    J'ai l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Unknown record property / related component "town" on "ZuluTreeCategory"
    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    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
     
    ZuluCategory:
      relations:
        Trees:
          class: ZuluTree
          refclass: ZuluTreeCategory
          local: category_id
          foreign: tree_id
          foreignAlias: Categories
     
    ZuluTreeCategory:
      columns:
        tree_id:  { type: integer, primary: true }
        category_id: { type: integer, primary: true }
      relations:
        ZuluCategory:  { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: ZuluCategory}
        ZuluTree: { onDelete: CASCADE, local: tree_id, foreign: id, foreignAlias: ZuluTree }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $category->getTrees();

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Effectivement, merci.
    Par contre, j'utilise une pagination avec sfDoctrinePager et donc il faudrait que je passe en paramètre la requête et non la doctrine_collection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
     $this->zulu_trees = Doctrine::getTable('ZuluTree')->getAllQuery();
    
      $this->pager = new sfDoctrinePager('ZuluTree', 8);
    	  $this->pager->setQuery( $this->zulu_trees);
    	  $this->pager->setPage($request->getParameter('page', 1));
    	  $this->pager->init();
    Donc, il y aura un execute() sur la query passée, ce qui marche pas avec $category->getTrees();

  4. #4
    Invité
    Invité(e)
    Par défaut
    D'accord. Dans ce cas le bout de code que tu as mis dans ton post précédent fonctionne non ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Non, car mon test avec getTown plantait.
    Je n'arrivais pas à récupérer tous les attributs du ZuluTree.

  6. #6
    Invité
    Invité(e)
    Par défaut
    D'un côté tu me parles d'un pager qui a donc besoin d'une query, d'un autre côté tu me parles d'un test, qui lui a besoin d'une collection.

    Qu'est ce que tu cherches à faire ? Je n'arrive pas à te suivre.

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

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. WCf & Best Practises
    Par DaMo` dans le forum Windows Communication Foundation
    Réponses: 5
    Dernier message: 29/04/2010, 16h15
  3. Jointures en SQL
    Par Guizz dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/06/2003, 12h21
  4. Réponses: 14
    Dernier message: 17/03/2003, 18h31
  5. Jointures INNER et jointures classiques ???
    Par UbiK dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/09/2002, 10h29

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