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

  [Opened] [Résolu] DAO et jointures

Posted by sylozof on 01/14/2008 12:04

Bonjour

Il y a un truc qui me semble flou avec les DAO, c'est la manière de manipuler les jointures.

Un DAO contient basiquement une référence vers une table primaire (la balise <primarytable>) et une liste de propriétés (qui sont en fait les champs de la table primaire, pour simplifier).

Si maintenant je veux rajouter à ma requête des champs d'une autre table par jointure, comment je le précise dans le DAO ? Est-ce qu'il faut rajouter des tables dans la section <datasources> , comme dans le DAO testnews de l'application testapp ? Comment on choisit si on veut une jointure droite ou gauche ?

Et ensuite comment ça se passe pour les update et insert ensuite ? Par exemple, si j'instancie une factory pour faire un insert, comment Jelix reconnait que certains champs n'appartiennent pas à la table primaire et ne sont pas à insérer ?

Je n'ai pas trouvé de détail dans la doc à ce sujet, merci d'avance.

  [Opened] Re: DAO et jointures

Reply #1 Posted by laurentj on 01/14/2008 12:46

Si maintenant je veux rajouter à ma requête des champs d'une autre table par jointure, comment je le précise dans le DAO ?

Comme c'est indiqué dans la doc, en utilisant les balises foreigntable et optionalforeigntable.

Comment on choisit si on veut une jointure droite ou gauche ?

C'est toujours une jointure gauche. (pour une jointure droite, suffit de faire un dao sur l'autre table :-p)

Et ensuite comment ça se passe pour les update et insert ensuite ?

Les mise à jour et les insertions ne conçernent que les champs de la table principale.

  [Opened] Re: DAO et jointures

Reply #2 Posted by sylozof on 01/14/2008 22:07

Punaise, je comprends pas comment j'ai pu passer à côté. Ça fait pourtant une semaine que j'ai le nez plongé dedans... Désolé, et merci.

  [Opened] Re: [Résolu] DAO et jointures

Reply #3 Posted by laurentj on 02/11/2008 21:08

pour les INSERT, il faut le faire à la main, sur toutes les tables une par une ?

Oui, ça parait logique non ? D'ailleurs en rêgle générale, quand tu crée un enregistrement dans la table primaire, tu n'as pas toujours à insérer des enregistrements dans les 11 tables étrangères (surtout quand lesdites tables ne sont juste que des tables "de références").

Donc en général, tu auras un DAO pour chaque table que tu veux manipuler, en particulier ta table principal et tes tables de jointures. (sauf si tu veux faire les requêtes à la main).

 
Page
  1. [Résolu] DAO et jointures