- 1
[Opened] dao et foreign table fille
Posted by isepman on 07/29/2008 21:04
bonsoir, j'utilise jelix depuis 2 jours, je vais surement poser une question qui va en faire rire certains mais j'me lance:
J'ai une table news avec un champ id en primarykey
J'ai une table comments avec un champ id en primarykey et un champ news_id
Naturellement comments est affiliée à news
Dans mon news.dao.xml, j'ai tenté une association (juste pour récupérer le compte des commentaires). La requete que j'aimerais avoir est celle la:
SELECT `news`.`id` , `news`.`texte` , COUNT( `comments`.`id` ) AS `comments_count` FROM `news` AS `news` LEFT JOIN `comments` AS `comments` ON ( `comments`.`news_id` = `news`.`id` ) GROUP BY `news`.`id`
Seulement, la requete que j'ai réussi a générer (du premier coup quand même!!) est celle la:
SELECT `news`.`id` , `news`.`texte` , COUNT( `comments`.`id` ) AS `comments_count` FROM `news` AS `news` LEFT JOIN `comments` AS `comments` ON ( `news`.`news_id` = `comments`.`id` ) GROUP BY `news`.`id`
Fini de parler, voici les datasources de mon DAO: 'news~news'
<datasources> <primarytable name="news" realname="news" primarykey="id" /> <foreigntable name="comments" primarykey="id" onforeignkey="news_id"/> </datasources>
D'où mes questions:
- Est-on obligé (dans les associations avec les DAO) de faire appel uniquement a des associations sur des tables parentes?
- Dois-je donc passer par un autre DAO (du style comments~qqchose) alors que je veux uniquement avoir le nombre de commentaire dans comments et toute la news?
- Ca me semble plus logique de faire ça dans le DAO news,non?
Merci pour votre réponse
[Opened] Re: dao et foreign table fille
Posted by bballizlife on 07/30/2008 08:50
Si tu veux compter un nombre de commentaires, tu dois le faire dans une DAO "comments". La dao news porte bien son nom puisqu'elle permet d'agir sur la table correspondante et uniquement celle-ci. Alors certes on peut ajouter une foreigntable mais cela ne permet que de récupérer des champs d'une table fille, rien d'autre.
Donc soit tu utilise les DAO et tu en fait 2 (news et comments) et dans ce cas tu te fais facilement une méthode xml dans la DAO comments pour compter (genre countByNews). Soit tu tiens à faire ça dans 1 seule requête et là tu code ton propre SQL en utilisant jDb.
Est-on obligé (dans les associations avec les DAO) de faire appel uniquement a des associations sur des tables parentes?
Quelles autres associations voudrais-tu qu'il soit possible de faire ?
Dois-je donc passer par un autre DAO (du style comments~qqchose) alors que je veux uniquement avoir le nombre de commentaire dans comments et toute la news?
Oui et non, cf ma réponse au dessus ;)
Ca me semble plus logique de faire ça dans le DAO news,non?
Personnellement, non.
N'importe comment c'est dans la doc
- 1