Problème
J'ai besoin d'avoir plusieurs conditions utilisant le constructeur de requêtes, dans l'un de mes projets pour un client. J'ai trouvé une solution, je ne sais pas si c'est la meilleure façon de le faire.
Exemple:
$ résultats = utilisateur :: où ('this', '=', 1)
-> où ('that', '=', 1)
-> où ('this_too', '=', 1)
-> où ('that_too', '=', 1)
-> où ('this_as_well', '=', 1)
-> où ('that_as_well', '=', 1)
-> où ('this_one_too', '=', 1)
-> où ('that_one_too', '=', 1)
-> où ('this_one_as_well', '=', 1)
-> où ('that_one_as_well', '=', 1)
-> get ();
Y a-t-il une meilleure façon de le faire, ou devrais-je m'en tenir à cette méthode?
Solution
Tant que vous voulez tous les temps et l'opérateur, vous pouvez les regrouper de cette façon:
$ MatchTheSe = ['Field1' => 'Value1', 'Field2' => 'Value2',…];
// Si vous avez besoin d'un autre groupe de où comme alternative:
$ orthose = ['encore_another_field' => 'encore_another_value',…];
Alors:
$ Results = Organization :: Where ($ MatchTese) -> get ();
// avec un autre groupe
$ résultats = utilisateur :: où ($ matchthese)
-> ou où ($ orthose)
-> get ();
Ce qui précède entraînera une telle requête:
Sélectionner * dans les organisations
Où (field1 = valeur1 et champ2 = valeur2 et…)
Ou (encore_another_field = encore_another_value et…)