Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] liaison de table sur plusieurs niveaux

Posted by lipki on 01/28/2008 18:59

Toujours dans mon exploration du CRUD et des dao.

Je me demande comment faire des liaisons sur plusieurs niveaux.

c'est a dire.

  • Commandes contiens un identifiant de la table utilisateurs
  • utilisateurs contiens un identifiant de la table adresses_has_utilisateurs
  • adresses_has_utilisateurs contiens un identifiant de la table adresses
  • adresses contiens un identifiant de la table pays

Est il possible de créer un dao qui représente ce genre de liaison.

Actuellement je n'ai réussi qu'a faire la première liaison.

  • Commandes contiens un identifiant de la table utilisateurs

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #1 Posted by lipki on 01/28/2008 19:33

dans le même genre,

    * panierfroid contiens un identifiant de la table commandes

pour chaque commandes j'ai une liste de produit.
du coup dans mon template list de mon CRUD, je doit lister les commandes, et pour chaque commande les produits.
j'ai l'impression qu'il va falloir que je fasse mon propre jControllerDaoCrud.

Je culpabilise de posé plein de questions ( je lis bcp la doc ), et je m'âprete a posé une question de plus.

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #2 Posted by laurentj on 01/28/2008 21:05

jControllerDaoCrud sert à faire une interface de gestion pour des données simples. Là je pense que vu tout ce que tu veux afficher en même temps, il va falloir te faire ton propre contrôleur, avec plusieurs DAO, plusieurs formulaires etc...

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #3 Posted by sylozof on 01/29/2008 12:18

Je rebondis sur la question de lipki, notamment concernant les jointures multiples.

Dans un DAO, il est possible de définir une table primaire, et ensuite des tables étrangères en précisant les champs de la table primaire qui servent de clés étrangères pour les jointures (avec onforeignkey).

Ma question serait donc : si j'ai une table primaire t1, et deux tables étrangères t2 et t3, et que je veux faire non seulement une jointure entre t1 et t2 (ça c'est facile, l'attribut onforeignkey sur t2 permet de repérer la clé étrangère dans t1) mais aussi une jointure entre t2 et t3, comment je fais ? En effet, dans t3 l'attribut onforeignkey ne permet pas de préciser qu'on veut faire une jointure sur t2, mais il la fera automatiquement sur t1.

Je peux toujours passer par jDb et une requête construite "à la main", mais je voulais savoir si c'était possible avec un DAO.

Merci d'avance.

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #4 Posted by bballizlife on 01/29/2008 13:19

@sylozof : comme tu l'as compris, dans ton exemple, tu peux facilement faire une jointure entre t1 et t2 mais, en se basant toujours sur t1, tu ne peux pas en faire une entre t2 et t3. Les Daos (pour le moment ?) ne permettent pas de le faire et il faut passer par du vrai SQL en utilisant jDb.


N'importe comment c'est dans la doc

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #5 Posted by lipki on 01/29/2008 15:20

Reste a savoir ce qui est prévu pour l'avenir ??

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #6 Posted by laurentj on 01/29/2008 15:26

À l'avenir (moyen ou long terme) il est prévu jOrm, un autre système de mapping relationnel objet, comblant toutes les lacunes de jDao. Par contre, vu que j'ai à peine commencé, pas de date de sortie :-) Cela n'empêchera pas des évolutions dans jDao entre temps.

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #7 Posted by lipki on 01/29/2008 16:48

Bonne nouvelle :)

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #8 Posted by sylozof on 01/30/2008 09:36

Ok, merci pour toutes ces précisions.

  [Opened] Re: liaison de table sur plusieurs niveaux

Reply #9 Posted by Ahava on 02/01/2008 23:09

Excellent, un bon mapping pour un orm en xml, comme en java ! :D


Mon blog PHP @ Jelix

 
Page
  1. Re: liaison de table sur plusieurs niveaux