Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DBIterator : bug d'utilisation avec OR et IN #16907

Closed
2 tasks done
procsi-dev opened this issue Apr 9, 2024 · 3 comments
Closed
2 tasks done

DBIterator : bug d'utilisation avec OR et IN #16907

procsi-dev opened this issue Apr 9, 2024 · 3 comments
Labels

Comments

@procsi-dev
Copy link

Code of Conduct

  • I agree to follow this project's Code of Conduct

Is there an existing issue for this?

  • I have searched the existing issues

Version

10.0.11

Bug description

Bonjour, je cherche un moyen de transformer ma requête (elle fonctionne) :
$request = $DB->request(
'SELECT u.firstname, u.realname, e.name entities
from glpi_users u, glpi_entities e
where e.id = u.entities_id and (u.phone = '' . $num . ''
OR u.phone2 = '' . $num . '' OR u.mobile = '' . $num . ''
OR u.phone = '' . $num2 . '' OR u.phone2 = '' . $num2 . ''
OR u.mobile = '' . $num2 . ''OR u.phone = '' . $num3 . ''
OR u.phone2 = '' . $num3 . '' OR u.mobile = '' . $num3 . ''
OR u.phone = '' . $num4 . '' OR u.phone2 = '' . $num4 . ''
OR u.mobile = '' . $num4 . '')'
);

en arraylist mais je n'arrive pas a transformer mes "or" car j'utilise plusieurs fois par exemple le "phone".
J'ai cherché a trouver une solution avec la documentation mais je n'ai trouver aucune réponse :
glpi-developer-documentation.readthedocs.io/en/master/devapi/database/dbiterator.html

Voila actuèlement a quoi ressemble la request transformer :
$requestQuery = [
'SELECT' => [
'glpi_users' => ['firstname', 'realname'],
'glpi_entities' => 'name AS entities'
],
'FROM' => ['glpi_users', 'glpi_entities'],
'FKEY' => [
'glpi_entities' => 'id',
'glpi_users' => 'entities_id'
],
'WHERE' => [
'OR' => [
'phone' => [$num,$num2,$num3,$num4],
'phone2' => [$num,$num2,$num3,$num4],
'mobile' => [$num,$num2,$num3,$num4]
]

    ]
];
$request = $DB->request($requestQuery);

Dans cette requête, j'ai essayer d'utiliser les "IN" comme dans cette requête SQL ci-dessous mais cela n'a pas marche alors que la requête en format SQL fonctionne :
SELECT u.firstname, u.realname, e.name entities, phone, phone2, mobile
from glpi_users u, glpi_entities e
where e.id = u.entities_id and (
phone in ("","", "","")
OR phone2 in ("","","","")
OR mobile in ("","","","")
)

Bien a vous et bonne journée

Relevant log output

No response

Page URL

No response

Steps To reproduce

No response

Your GLPI setup information

No response

Anything else?

No response

@trasher trasher added the invalid label Apr 9, 2024
Copy link
Contributor

github-actions bot commented Apr 9, 2024

This issue has been closed because you did not provide the requested information.

@github-actions github-actions bot closed this as completed Apr 9, 2024
@cedric-anne
Copy link
Member

[
    'OR' => [
        ['phone' => $num],
        ['phone' => $num2],
        ['phone' => $num3],
        ['phone' => $num4],
        ['phone2' => $num],
        ['phone2' => $num2],
        ['phone2' => $num3],
        ['phone2' => $num4],
        ...
    ]
]

@procsi-dev
Copy link
Author

procsi-dev commented Apr 9, 2024

[
    'OR' => [
        ['phone' => $num],
        ['phone' => $num2], <-- remplace $num par $num2
        ['phone' => $num3], <-- la même
        ['phone' => $num4],
        ['phone2' => $num],
        ['phone2' => $num2],
        ['phone2' => $num3],
        ['phone2' => $num4],
        ...
    ]
]

Rappeler dans le "OR" avec la même key va juste remplacer la valeur.

@glpi-project glpi-project locked as off-topic and limited conversation to collaborators Apr 9, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants