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

  [Opened] dao selectpattern sur clé primaire

Posted by okashira on 10/06/2019 16:51

Bonjour,

J'essaye en vain d'utiliser le selectpattern sur une clé primaire et ça n'a pas l'air de fonctionner. Pourtant dans la doc il y a marqué que c'est possible alors je me demande si je ne me trompe pas dans la manipulation :

Id étant ma clé primaire.

<primarytable name="w_realm" realname="w_realm" primarykey="id" />
<property name="id" fieldname="id" datatype="binary" required="true" selectpattern="HEX(%s)" insertpattern="unhex(replace(uuid(),'-',''))"/>
<property name="id_hex" fieldname="id_hex" datatype="binary" selectpattern="HEX(id)" insertpattern="" updatepattern=""/>
<property name="name" fieldname="name" datatype="text" required="true"/>

M'affiche : id : b͸a��鷰 ', id_hex : 62CDB861E7D111E9B7B00A0027000015, name : ZSVN

A savoir que j'ai déjà testé sur un autre champ que la clé primaire, et ça fonctionne plutôt bien. Après rien ne m'empêche d'utiliser id_hex dans mon exemple (id_hex est un alias), mais j'aurai voulu directement utiliser id. Si quelqu'un peut m'éclairer svp, ça serait fort sympathique !

  [Opened] dao selectpattern sur clé primaire

Reply #1 Posted by laurentj on 10/07/2019 10:45

Bonjour,

Bizarre, il faudrait que je teste.

Peux-tu voir la requête qu'il fait dans le fichier PHP généré dans ton temp, dossier compiled/daos/, et me montrer le bout de code correspondant ?

  [Opened] dao selectpattern sur clé primaire

Reply #2 Posted by okashira on 10/08/2019 15:37

Merci pour la réponse,

Voici le code de la fonction qui génère la requête :

$__query =  $this->_selectClause.$this->_fromClause.$this->_whereClause;
$__query .=' WHERE  1=1  ORDER BY `w_realm`.`name` asc';
    $__rs = $this->_conn->query($__query);
    $this->finishInitResultSet($__rs);

En faisant un echo dessus je récupère du coup :

SELECT `w_realm`.`id`, HEX(id) as `id_hex`, `w_realm`.`name` FROM `w_realm` AS `w_realm` WHERE 1=1 ORDER BY `w_realm`.`name` asc

Et dans le $_selectClause il y a ceci :

protected $_selectClause='SELECT `w_realm`.`id`, HEX(id) as `id_hex`, `w_realm`.`name`';

On dirait que le selectpattern n'a pas du tout été pris en compte sur le champ id.


J'ai rapidement fait un test en modifiant le champ "name" dans le dao (name qui existe dans ma bdd) :

<property name="name" fieldname="name" datatype="text" required="true" selectpattern="CONCAT(%s, '1')"/>

Et le selectClause le prend bien en compte :

protected $_selectClause='SELECT `w_realm`.`id`, HEX(id) as `id_hex`, CONCAT(`w_realm`.`name`, \'1\') as `name`';

  [Opened] dao selectpattern sur clé primaire

Reply #3 Posted by laurentj on 11/05/2019 14:28

Bonjour,

Je viens de vérifier. Effectivement, lors de la lecture du fichier dao, les attributs (select/insert/update)pattern sont ignorés sur les clés primaires et étrangères...

Faut que je vois les implications de permettre cela dans le code.

Désolé pour le retard de la réponse.

 
Page
  1. dao selectpattern sur clé primaire