Коротко:
1) Сущность Post наследуется от базового класса Entity
2) Сущность CustomField с тремя полями:
className, key, value
Один пост может иметь много доп. полей. Все поля хранятся в одной таблице. Разделяются по class_name.
Как можно вытащить через OneToMany все кастомные поля, с определенным class_name, который может меняться в зависимости от класса?
Это похоже на наследование таблиц (inheritance mapping), но всегда жаловались что это очень тяжело потом поддерживать в коде, нужен какой-то более прозрачный и прямолинейный механизм
fman2 Уточните пожалуйста, ваш className в поле entity - это прямо свойство самой entity, а не inheritance mapping? Если так - то ваш вопрос скорее про запросы, а не про associations
В общем, задумка, следующая. Есть сущности User, Order, Post, Category и так далее, их может быть сколько угодно.
К сущностям нужны дополнительные поля. Которые будут хранится в одной таблице, к примеру custom_fields, со следующей структурой:
id | entity_class | entity_id | key | value
где entity_class может быть User, Order...
И мне хотелось бы написать базовый класс Entity, от которого будут наследоваться все остальные и соответственно все остальные будут иметь поддержку кастомных полей. Соответственно, для связи OneToMany мне нужно сделать дополнительную выборку по entity_class. Если что-то непонятно написал, спрашивайте.
fman2, Да, задача ясна. Собственно вы сейчас как раз описали inheritance mapping в Doctrine. Причём, поскольку список entities планируется к расширению - вам стоит рассматривать вариант Class Table inheritance, хотя он и несколько медленнее из-за дополнительного join'а.