В Cake 2.0.5 при входе в систему с использованием компонента Auth может показаться, что Cake извлекает все связанные модели; и со многими ассоциациями вход в систему занимает много времени.
Эта проблема была впервые обнаружена здесь, в этом билете , но данное "решение" не имеет большого значения, и я не могу найти ничего другого в документации.
Используя класс FormAuthenticate в 2.0, вы можете создать подкласс и добавить
любой рекурсивный уровень, который вы чувствуете, подходит довольно легко.
Кто-нибудь испытывал это, и есть исправление?
Ниже - пример кода:
Стандартный метод входа:
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.');
}
}
И торт с запросом производит для моего приложения:
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
Как вы видите, он извлекает каждое поле и объединяет каждую модель. Мое приложение имеет только 2 дополнительные ассоциации, но вы можете видеть, как это может быть проблемой с очень сложными приложениями.
В действительности это должна быть таблица пользователей. Установка recursive
, кажется, абсолютно ничего не делает.