Dans Cake 2.0.5, lorsque l'on se connecte à l'aide du composant Auth, il semblerait que Cake récupère tous les modèles associés ; et avec de nombreuses associations, la connexion prend beaucoup de temps.
Ce problème a été identifié pour la première fois ici dans ce billet mais la "solution" donnée ne veut pas dire grand chose, et je ne trouve rien d'autre dans la documentation.
En utilisant la classe FormAuthenticate dans 2.0, vous pouvez sous-classer et ajouter tout niveau récursif que vous jugez approprié assez facilement.
Quelqu'un a-t-il rencontré ce problème et a-t-il trouvé une solution ?
Ci-dessous - exemple de code :
Méthode de connexion standard :
public function login() {
$this->User->recursive = -1; // does nothing
if ($this->Auth->login()) {
$this->redirect($this->Auth->redirect());
} else {
$this->Session->setFlash('Invalid username or password.');
}
}
Et le gâteau de requêtes est produit pour mon application :
SELECT `User`.`id`, `User`.`username`, `User`.`password`, `User`.`role`, `User`.`created`, `User`.`modified`, `Band`.`id`, `Band`.`name`, `Band`.`genre`, `Band`.`location`, `Band`.`influences`, `Band`.`founded`, `Band`.`bio`, `Band`.`created`, `Band`.`modified`, `Band`.`status`, `Band`.`website`, `Band`.`email`, `Band`.`contact_number`, `Band`.`user_id`, `Member`.`id`, `Member`.`user_id`, `Member`.`first_name`, `Member`.`last_name`, `Member`.`display_name`, `Member`.`dob`, `Member`.`gender`, `Member`.`bio`, `Member`.`influences`, `Member`.`band_id` FROM `users` AS `User` LEFT JOIN `bands` AS `Band` ON (`Band`.`user_id` = `User`.`id`) LEFT JOIN `members` AS `Member` ON (`Member`.`user_id` = `User`.`id`) WHERE `User`.`username` = 'admin' AND `User`.`password` = 'dcec839a9258631138974cbccd81219f1d5dfcfa' LIMIT 1
Comme vous pouvez le voir, il récupère chaque champ, et joint chaque modèle. Mon application n'a que deux associations supplémentaires, mais vous pouvez voir comment cela pourrait être un problème avec des applications très complexes.
Alors qu'en réalité, il ne devrait s'agir que de la table des utilisateurs. Réglage de recursive
semble ne rien faire du tout.