Bonjour,
J'ai plusieurs tables contenant des emails provenant d'application differente, je voudrais savoir s'il existe une solution pour requeter toute les tables en une fois.
par exemple, je cherche john.doe@gmail.com sur la table1, celle ci n'existant pas, cela chercherais sur la table 2, puis 3

Merci pour vos lumieres eclairante

2 réponses


Pakito
Réponse acceptée

Cela s'éloigne pas mal du concept de Cake qui repose sur 1 model = 1 table.

J'ai beau chercher, je pense que les comportements classiques de Cake ne vont pas t'être d'un grand secours.
Du coup, il faut plutôt te tourner vers Model::Query() et faire une requête sur tables multiples avec des UNION ( petite aide dans la doc de MySQL, pour les autres types de BDD, j'avoue que je ne suis pas assez documenté pour te fournir des liens, mais ça doit se trouver).

Du coup, tu pourrais avoir un code du genre :

$this->Model->query("
    SELECT * FROM (
        SELECT t1.email FROM table1 AS t1 UNION
        SELECT t2.email FROM table2 AS t2 UNION
        SELECT t3.email FROM table3 AS t3
    ) AS Global WHERE email = 'john.doe@gmail.com';
");

Remarque, c'est peut être faisable avec des JOIN, mais ça semble être plus complexe.

sylvain
Auteur

Merci @pakito pour cette information.
J'aurais aimé faire autrement, mais dans notre boite, il y a pas mal de projets qui sont éparpillés.