- 1
[Opened] jDbConnection.mysql
Posted by Zagor on 03/31/2006 23:17
Je suis en train de mettre en place un module news avec 2 tables (1 pour les news et 1 qui nomme les rubriques)
news.dao.xml
<?xml version="1.0"?>
<dao xmlns="http://jelix.org/ns/dao/1.0">
<datasources>
<primarytable name="hd_news" primarykey="news_id" />
<foreigntable name="hd_news_rubriques" primarykey="news_rubriques_id" onforeignkey="news_rubrique" />
</datasources>
<record>
<property name="id" fieldname="news_id" table="hd_news" datatype="autoincrement" required="yes" />
<property name="titre" fieldname="news_titre" table="hd_news" datatype="string" required="yes" />
<property name="description" fieldname="news_description" table="hd_news" datatype="string" required="yes" />
<property name="texte" fieldname="news_texte" table="hd_news" datatype="string" required="yes" />
<property name="auteur" fieldname="news_auteur" table="hd_news" datatype="string" required="yes" />
<property name="date" fieldname="news_date" table="hd_news" datatype="date" required="yes" />
<property name="valider" fieldname="news_valider" table="hd_news" datatype="integer" required="yes" />
<property name="rubrique" fieldname="news_rubriques_nom" table="hd_news_rubriques" datatype="string" required="yes" />
</record>
<factory>
<method name="getById" type="selectfirst">
<parameter name="id" />
<conditions>
<eq property="id" expr="$id" />
</conditions>
</method>
<method name="findLastById" type="select">
<parameter name="limit" />
<conditions>
<eq property="valider" value="3" />
</conditions>
<order>
<orderitem property="date" way="desc" />
</order>
<limit offset="0" count="$limit" />
</method>
</factory>
</dao>
Lors de la comilation (je suppose), Jélix m'affiche uniquement un message d'erreur
[error 403] Erreur dans la requête (Erreur de syntaxe près de 'AND hd_news.news_valider = 3 ORDER BY date desc' à la ligne 1(SELECT hd_news.news_id as id, hd_news.news_titre as titre, hd_news.news_description as description, hd_news.news_texte as texte, hd_news.news_auteur as auteur, hd_news.news_date as date, hd_news.news_valider as valider, hd_news_rubriques.news_rubriques_nom as rubrique FROM hd_news, hd_news_rubriques WHERE hd_news.news_rubrique=hd_news_rubriques. AND hd_news.news_valider = 3 ORDER BY date desc)) f:\portableapps\portableeasyphp5\www\jelix-lib-1.0alpha2\lib\jelix\db\drivers\mysql\jDbConnection.mysql.class.php 86
Je vois que le problème vient de WHERE hd_news.news_rubrique=hd_news_rubriques. qui ne nomme pas la clè de la table hd_news_rubriques.
Est ce un bug de Jélix ou une mauvaise configuration de mon fichier dao.
[Opened] Re: jDbConnection.mysql
Posted by laurentj on 04/01/2006 23:20
Ton fichier me semble bon. Je pense que tu as mis le doigt sur un bug. Je vais investiguer :-)
Sinon quelques remarques sur ton fichier :
- tu n'es pas obligé de mettre l'attribut table sur les propriétés qui conçernent la table principale (donc pas besoin de mettre table="hd_news" )
- ta methode getById est inutile. Il y a déjà nativement la methode get(), à laquelle tu passes la ou les clés primaires (donc ici ton 'id').
[Opened] Re: jDbConnection.mysql
Posted by laurentj on 04/12/2006 17:40
oui oui désolé, pas encore eu le temps de voir ça.
[Opened] Re: jDbConnection.mysql
Posted by laurentj on 04/12/2006 23:42
bug corrigé. Je pense que la version svn-132 dispo en téléchargement fonctionnera pour toi.
- 1

