Уменьшите количество дополнительных запросов до 0, переопределив функции в базовой модели - PullRequest
0 голосов
/ 06 мая 2010

моя базовая настройка базы данных:

User:...  
Info:  
  relations:  
    User: { foreignType:one }

При отображении информации о пользователе требуется: 1 запрос для поиска информации о пользователе и 1 запрос для поиска дополнительной информации

Я хочу свести это к одному запросу, который находит оба, я предполагаю, что мне нужно переопределить функцию из BaseUser.class.php или что-то в этом роде, но я не совсем уверен, что делать.

Спасибо!

1 Ответ

0 голосов
/ 07 мая 2010

Если вы используете Doctrine, вам нужно переопределить методы findOneBy*** в вашем классе InfoTable, чтобы объединить данные при извлечении

Class InfoTable extends Doctrine_Table {
   [...]
   public function findOneById($id) 
   {
        $q = $this->createQuery('i')
           ->leftJoin('i.User u')
           ->where('i.id = ?', $id);
        return $q->fetchOne();
    }
}

Doctrine обработает связанный объект и сохранит один запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...