Ответ 1
Doctrine 2 будет автоматически рассчитываться для вас, поскольку свойства ассоциации фактически являются объектами коллекции Doctrine:
public function getRoomCount()
{
return $this->rooms->count();
}
Если вы отметите связь как нетерпеливую, Doctrine будет загружать комнаты всякий раз, когда вы запрашиваете домашние объекты. Если вы отметите их как ленивые (по умолчанию), Doctrine не будет загружать комнаты, пока вы не получите доступ к свойству $this->rooms
.
В соответствии с Доктриной 2.1 вы можете отметить ассоциации как лишние лени. Это означает, что вызов $this->rooms->count()
не будет загружать комнаты, он просто выдает запрос COUNT
в базу данных.
Здесь вы можете прочитать о дополнительных ленивых коллекциях: http://www.doctrine-project.org/docs/orm/2.1/en/tutorials/extra-lazy-associations.html