You are not logged in.
Pages: 1
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
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.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
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
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.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
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
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.16 (ubuntu 22.04 PHP8.1 Mariadb10.6 ) plugins : comportements 2.7.3 reports 1.16.0 formcreator 2.13.9, datainjection 2.13.5 fields 1.21.9
Offline
Pages: 1