- 1
[Opened] Petit bogue Dao avec Jelix 1.3
Salut, ça fait un bout que j'ai pas posté ici... En montant un script avec Jelix 1.3 (dernière version), je suis tombé sur un petit bogue, peut-être quelqu'un peut vérifier que c'est pas juste moi qui ai ce bogue. Dans un Dao, dans une methode update, si je declare deux value reçue commencant par le même mot, il n'y en a qu'une seule de prise en compte À(j'ai suivit avec le deboggueur). Exemple:
<method name="updateByCode" type="update"> <parameter name="codeitem" /> <parameter name="price" /> <parameter name="price_big" /> <parameter name="stock" /> <values> <value property="price" expr="$price" /> <value property="price_big" expr="$price_big" /> <value property="stock" expr="$stock" /> </values> <conditions logic="and"> <eq property="code" expr="$codeitem" /> </conditions> </method>
Et voici ce que j'ai si je suis avec Xdebug dans le fichier temp compilé (il prend eux fois $price mais pas $price_big):
function updateByCode ($codeitem, $price, $price_big, $stock){ $__query = 'UPDATE `'.$this->_conn->prefixTable('site_item').'` SET `price`= '.($price === null ? 'NULL' : jDb::floatToStr($price)).', `price_big`= '.($price === null ? 'NULL' : jDb::floatToStr($price)).'_big, `stock`= '.($stock === null ? 'NULL' : intval($stock)).''; $__query .=' WHERE `code` '.' = '.$this->_conn->quote($codeitem).''; return $this->_conn->exec ($__query); }
Si je change "price_big" par "big_price", cela fonctionne parfaitement.
Quelqu'un peut essayer juste pour être sur que je ne dit pas de conneries.
Merci.
[Opened] Petit bogue Dao avec Jelix 1.3
Je confirme le bug :-/
[Opened] Petit bogue Dao avec Jelix 1.3
[Opened] Petit bogue Dao avec Jelix 1.3
[Opened] Petit bogue Dao avec Jelix 1.3
Curieux ... de mon coté je n'ai pas le soucis ... (en fait si voir mon EDIT plus bas)
le générateur DAO produit ceci
function findById2 ($price, $price_big){ $__query = 'UPDATE `'.$this->_conn->prefixTable('toto').'` SET `price`= '.($price === null ? 'NULL' : jDb::floatToStr($price)).', `price_big`= '.($price === null ? 'NULL' : jDb::floatToStr($price)).'_big'; return $this->_conn->exec ($__query); }
à partir de cette dao :
<datasources> <primarytable name="toto" realname="toto" primarykey="id" /> </datasources> <record> <property name="id" fieldname="id" datatype="int" required="true"/> <property name="price" fieldname="price" datatype="decimal" required="true"/> <property name="price_big" fieldname="price_big" datatype="decimal" required="true"/> </record> <factory> <method name="findById2" type="update"> <parameter name="price"/> <parameter name="price_big"/> <values> <value property="price" expr="$price" /> <value property="price_big" expr="$price_big" /> </values> </method> </factory>
meme en mettant le datatype decimal ca change rien
tout ceci testé avec le "master" de la 1.3
EDIT :
curiosité 2 : je reproduis bien le probleme mais mais mais la methode update générée par Jelix elle, est bonne :
public function update ($record){ $query = 'UPDATE `'.$this->_conn->prefixTable('toto').'` SET `price`= '.($record->price === null ? 'NULL' : jDb::floatToStr($record->price)).', `price_big`= '.($record->price_big === null ? 'NULL' : jDb::floatToStr($record->price_big)).' where `id`'.' = '.intval($record->id).' '; $result = $this->_conn->exec ($query); return $result; }
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
[Opened] Petit bogue Dao avec Jelix 1.3
@foxmask : cherche pas plus longtemps. il y a bien un souci et j'ai déjà identifié pourquoi. (le remplacement des variables dans expr est pourri). Reste à le corriger.
[Opened] Petit bogue Dao avec Jelix 1.3
J'ai pisté ça hier soir sans parvenir à faire cracher à la debugbar l'endroit où ca deconnait alors que j'avais le doigt dessus. Ca c'est "chiant". un jLog::dump() ne m'a rien montré dans le debug bar. Une erreur surgit avant.
Je vais voir ca
@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !
- 1