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

  [Opened] Petit bogue Dao avec Jelix 1.3

Posted by dantahoua on 11/24/2011 00:50

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

Reply #1 Posted by laurentj on 11/24/2011 13:59

Je confirme le bug :-/

hop http://developer.jelix.org/ticket/1440

  [Opened] Petit bogue Dao avec Jelix 1.3

Reply #2 Posted by laurentj on 11/24/2011 14:15

C'est un bug qui est là depuis jelix 1.1 au moins...

  [Opened] Petit bogue Dao avec Jelix 1.3

Reply #3 Posted by dantahoua on 11/24/2011 15:56

Merci pour la confirmation, donc c'est pas mes yeux... ;)

  [Opened] Petit bogue Dao avec Jelix 1.3

Reply #4 Posted by foxmask on 11/25/2011 22:14

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

Reply #5 Posted by laurentj on 11/26/2011 11:07

@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

Reply #6 Posted by foxmask on 11/26/2011 22:46

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 !

 
Page
  1. Petit bogue Dao avec Jelix 1.3