- 1
[Opened] BUGs ou pas dans jDao et JDb
Posted by Zagor on 09/12/2006 14:49
J'ai une table de la manière suivante :
<record>
<property name="id" fieldname="id" datatype="autoincrement" required="yes" />
<property name="nom" fieldname="nom" datatype="string" required="yes" />
Cette table comprend plusieurs enregistrements avec le même nom mais une id différente.
Pour rechercher l'enregistrement avec un nom donné mais avec l'id le plus élevé, j'utilise ceci :
<method name="findByName" type="selectfirst">
<parameter name="name" />
<conditions>
<eq property="nom" expr="$name" />
</conditions>
<order>
<orderitem property="id" way="desc" />
</order>
</method>
Avec un résultat d'id : 37 237 588 938
Jelix fournit à ceci
$dao = jDao::get('cartes');
$carte = $dao->findByName('Apparition du Graal');
$carte->id = string(3) "588"
Ici se pose 2 problèmes :
1) le résultat est faux il devrait être de 938
2) le resultat est un string alors que l'id est définit comme un integer et ainsi je ne peux pas l'utiliser directement comme paramètre de ceci
$test = $dao->get($carte->id);
Avec jDb les problèmes sont moindres
$dbw = jDb::getDbWidget();
$record = $dbw->fetchFirst("SELECT * FROM hd_cartes WHERE nom = '".$this->param('nom')."' ORDER BY id DESC");
donne $record->id = strint(3) "938"
Ici le resultat est correct mais le type est encore un string.
Alors BUGs ou pas si oui je posterais le bug
[Opened] Re: BUGs ou pas dans jDao et JDb
Posted by laurentj on 09/12/2006 18:43
1) le résultat est faux il devrait être de 938
La requète générée donne quoi ? (voir le fichier php généré dans le fichier temporaire temp/ton_appli/compiled/dao/xxxx )
2) le resultat est un string alors que l'id est définit comme un integer
ça c'est l'api de base de donnée dans php qui renvoi toujours des strings, quelque soit le type de champs. Et jDao ne fait pas de cast (inutile, et surtout ce serait affreux au niveau performance)
La déclaration des types dans le fichier xml est surtout là pour faire les vérification sur les valeurs, échapper ou non le contenu des valeurs etc.
et ainsi je ne peux pas l'utiliser directement comme paramètre de ceci
Cela ne pose absolument aucun problème. Cela génère une erreur ?
[Opened] Re: BUGs ou pas dans jDao et JDb
Posted by laurentj on 09/12/2006 23:35
je me demande si le "ORDER BY id desc" prend le id de hd_editions au lieu du id de hd_cartes... bizarre d'ailleurs qu'il n'y ait pas d'erreur sql à ce niveau..
Je pense qu'il y a donc bien un bug a niveau de jDao.. Tu peux le noter :-)
[Opened] Re: BUGs ou pas dans jDao et JDb
Posted by Zagor on 09/13/2006 12:42
Après modification du fichier /compiled/daos/modules/...~mysql.php il semble bien que l'erreur se fasse sur ORDER BY id desc que j'ai remplacé par ORDER BY hd_carte.id desc
- 1