Bonsoir,
Oui c'etait un string ....
Après le parse la oui la réponse est déjà meilleure. Par contre la problème de exécution SQL il trouve pas exposant.raisonSociale alors qu'il existe bizarre .....
Version imprimable
Bonsoir,
Oui c'etait un string ....
Après le parse la oui la réponse est déjà meilleure. Par contre la problème de exécution SQL il trouve pas exposant.raisonSociale alors qu'il existe bizarre .....
Ça, c'est un autre problème...Citation:
...Par contre la problème de exécution SQL....
Bonsoir,
Surement mais c'est étonnant quand meme car j'ai réussi a faire avec ma méthode et cela marche c'est juste pas élégant et j'ai une erreur avec la sql emis par la fonction et je ne comprend pas pourquoi c'est les mêmes champs ....
J'ai trouvé la raison de l'erreur : comme j'utilise TypeOrm dans le projet en fait dans le modele j'ai le champ raisonSociale défini mais en BSS c'est raison_sociale ! C'est donc pour cela que la requête passe pas ...
Alors la ....
En relisant ton code pour comprendre j'ai trouvé !
en fait sur cette ligne :
Faut enlever le .replace(/([^\. ]+)/gi, '`$1`') et donc :Code:sqlwhere += elts[0].replace(/([^\. ]+)/gi, '`$1`') + elts[1] + '\'' + elts[2].replace(/'/g, "\\'") + '\'';
et la TypeOrm transforme bien en `exposant`.`raison_sociale`='Alexandre' par exemple ....Code:sqlwhere += elts[0] + elts[1] + '\'' + elts[2].replace(/'/g, "\\'") + '\'';
re,
aie aie après test cela fonctionne et la cela marche si j'ai comme donné mais si jamais je ne fait un filtre que sur une colonne comem ceci :
[ 'exposant.raisonSociale', '=', 'Paul Est Le Meilleur' ]
alors la fonctionne plus !
avec votre méthode peux-on gérer les filtres ? Je vois que cela marche tous sauf un seul ou il y a que cela [ 'exposant.raisonSociale', '=', 'Paul Est Le Meilleur' ]
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 function get_filter_sqlwhere_recursive( arr, add_where=true ) { var sqlAndOr = ['and','or']; var sqlwhere = '('; if( Array.isArray(arr) ) { if( sqlAndOr.indexOf(arr[1])==-1 ) // PAS and NI or { sqlwhere += arr[0].replace(/([^\. ]+)/gi,'`$1`') + arr[1] + '\''+arr[2]+'\''; } else { arr.forEach( function(elts, index) { if( Array.isArray(elts) ) { if( sqlAndOr.indexOf(elts[1])>-1 ) // and | or { sqlwhere += get_filter_sqlwhere_recursive( elts, false ); // récursivité } else { sqlwhere += elts[0].replace(/([^\. ]+)/gi,'`$1`') + elts[1] + '\''+elts[2]+'\''; } } else { sqlwhere += ') '+elts.toUpperCase()+' ('; // AND | OR } }); } } else { return ''; } sqlwhere += ')'; if( add_where ){ sqlwhere = ' WHERE ' + sqlwhere; } return sqlwhere; }
donne :Code:["exposant.raisonSociale","=","Paul Est Le Meilleur"]
Code:WHERE (`exposant`.`raisonSociale`='Paul Est Le Meilleur')
Merci à toi ! c'est gentil de m'avoir aidé.