You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2018-08-29 15:20:35

AdelAchour
Member
Registered: 2018-07-23
Posts: 25

Utilisation du paramètre criteria

Bonjour,

En interrogeant l'API j'ai remarqué quelque chose avec le criteria ;

Disons par exemple que je veux récupérer la liste des tickets dont le technicien est le user 15 ET qui sont en cours OU en attente.

En d'autre termes je veux exécuter cette requête :

SELECT * FROM glpi_tickets WHERE technicien = 15 AND (statut = encours OR statut = enattente)

Le problème c'est qu'au lieu de cela, l'API me renvoie les tickets dont le technicien est 15 ET qui sont en cours, ET tous les tickets en attente.

En d'autres termes l'API exécute cette requête-là :

SELECT * FROM glpi_tickets WHERE (technicien = 15 AND statut = encours) OR statut = enattente

Je n'arrive pas à spécifier les parenthèses de la façon que je souhaite.

Voici le lien de ma requête:

http://XXX/glpi/apirest.php/search/Ticket?criteria[0][field]=5&criteria[0][searchtype]=equals&criteria[0][value]=15&criteria[1][link]=AND&criteria[1][field]=12&criteria[1][searchtype]=equals&criteria[1][value]=2&criteria[2][link]=OR&criteria[2][field]=12&criteria[2][searchtype]=equals&criteria[2][value]=3&criteria[3][link]=OR&criteria[3][field]=12&criteria[3][searchtype]=equals&criteria[3][value]=4

Ma question est la suivante:
Comment spécifier les parenthèses dans une requête comme celle-ci?

Offline

#2 2018-08-29 15:53:59

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: Utilisation du paramètre criteria

essayez :

http://XXX/glpi/apirest.php/search/Ticket?

criteria[0][field]=5&criteria[0][searchtype]=equals&criteria[0][value]=15
&criteria[1][link]=AND&criteria[1][field]=12&criteria[1][searchtype]=equals&criteria[1][value]=2

&criteria[2][link]=OR&criteria[2][field]=5&criteria[2][searchtype]=equals&criteria[2][value]=15
&criteria[3][link]=AND&criteria[3][field]=12&criteria[3][searchtype]=equals&criteria[3][value]=3

&criteria[4][link]=OR&criteria[4][field]=5&criteria[4][searchtype]=equals&criteria[4][value]=15
&criteria[5][link]=AND&criteria[5][field]=12&criteria[5][searchtype]=equals&criteria[5][value]=4

il y a une demande  sur https://glpi.userecho.com/communities/1 … expression  pour gerer les expressions régulières, ça simplifierait aussi votre cas :
on aurait

http://XXX/glpi/apirest.php/search/Ticket?
criteria[0][field]=5&criteria[0][searchtype]=equals&criteria[0][value]=15
&criteria[1][link]=AND&criteria[1][field]=12&criteria[1][searchtype]=regexp&criteria[1][value]=(2|3|4)


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#3 2018-08-29 16:10:29

AdelAchour
Member
Registered: 2018-07-23
Posts: 25

Re: Utilisation du paramètre criteria

Merci Mr LaDenrée!

Juste avant votre réponse j'étais tombé sur un post qui traitait le même sujet et où vous aviez également interagi, j'ai donc opté pour cette réponse et ça a bel et bien marché, j'avais également vu votre proposition et j'avais voté, en espérant qu'elle soit prise en compte, c'est tellement plus optimal !

Merci encore

Offline

#4 2018-08-29 16:15:42

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: Utilisation du paramètre criteria

c'est vrai que c'est un peu lourd de cette façon.
dans ce cas précis on peu simplifier
avec
technicien=15
ET statut >1
ET statut<5

c'est à dire seulement 3 critères


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#5 2018-08-30 11:39:13

AdelAchour
Member
Registered: 2018-07-23
Posts: 25

Re: Utilisation du paramètre criteria

Dans ce cas on est pas plutôt entrain de dire :
Les tickets dont le technicien est 15 ET le statut > 1. ET les tickets < 5 peu importe le technicien ?

Offline

#6 2018-08-30 11:41:21

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,146

Re: Utilisation du paramètre criteria

la clause technicien = 15 est toujours vraie quel que soit le nombre de 'ET' derriere.
le problème c'est quand il y a un 'OU'


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

Board footer

Powered by FluxBB