Выделение 1 байта для пустого класса зависит от компилятора. Компиляторы должны убедиться, что объекты находятся в разных ячейках памяти, и им необходимо выделить ненулевой размер памяти для объекта. Слушайте заметки по этой теме здесь: http://listenvoice.com/listenVoiceNote.aspx?id=27
Хотя компиляторы выделяют ненулевой размер в пустой класс, они также делать оптимизации, когда новые классы производятся из пустых классов. Слушайте о оптимизации базовой базы в вопросах интервью с программированием на С ++.
Итак, согласно комментариям, я использовал createQueryBuilder и beberlei / doctrineextensions.
вот DQL:
$qb = $this->createQueryBuilder('rr')
->andWhere('YEAR(rr.date) = :year')
->setParameter('year', $year)
->orderBy('rr.date', 'ASC')
->getQuery();
return $qb->execute();
и в doctrine.yaml я добавил это:
dql:
string_functions:
YEAR: DoctrineExtensions\Query\Mysql\Year
и теперь он работает хорошо, спасибо всем!