Краткое знакомство с моими сущностями:
У меня две сущности. «Пользователь» и «Хронометраж». «Пользователь» может иметь много «хронометража».
Я хочу создать форму, в которой пользователь может редактировать свои хронометражи на ежедневной основе. Поэтому мне нужно фильтровать хронометраж по дням. Как лучше всего это сделать?
Я мог бы добавить отношения OneToMany в свою сущность «Пользователь» следующим образом:
/**
* @ORM\OneToMany(targetEntity=Timekeeping::class, mappedBy="user")
*/
private $timekeepings;
А затем отфильтровать их в моем FormType, что я не совершенно уверен, как это сделать. Но если я go, то таким образом Doctrine получит все «хронометраж» для этого пользователя. Я хотел бы, если возможно, выполнить фильтрацию на уровне базы данных, поэтому из базы данных будут извлекаться только интересующие меня «хронометражи». Например, сегодняшняя дата.
Еще одно решение, о котором я подумал, - это добавить не отображаемое поле в мой FormType и заполнить его вручную.
$builder->add('timekeepings', CollectionType::class, [
'entry_type' => TimekeepingType::class,
'mapped' => false,
])
Я мог бы использовать репозиторий, чтобы получить хронометраж интерес. Но я не уверен, как назначить их моей форме "хронометраж". А позже извлеките их, чтобы сохранить изменения в базе данных.
EDIT: Александр предложил использовать query_builder, о котором я изначально думал, но, к сожалению, нет query_builder для CollectionType