Как заставить значение существовать один раз в столбце и разрешить дублирование для других значений в сущности доктрины - PullRequest
0 голосов
/ 08 октября 2018

Я работаю над проектом Symfony 2.8, использующим доктрину в качестве ORM.

У меня есть объект под названием Долг с полем Paid (логическое значение).

Моя проблема в том, что я хочу, чтобы "Paid" поле должно быть установлено на false только один раз, но должно быть установлено на true несколько раз.

Я знаю Unique ограничения и UniqueEntity валидатор, но эти методы и предназначены только для уникальных записей(например, истина один раз, ложь один раз).

Вариант использования: Когда у Клиента есть задолженность, поле которой Paid равно false, у этого клиента не может быть другой задолженности, поле которой Paid установлено наfalse.

Мне известно о доктрине жизненного цикла prePersist, preUpdate ... но ни один из них не решает мою проблему.

Я хочу, чтобы false значение точно существовало один раз в столбце, и любая попытка вставить второе ложное значение потерпит неудачу.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 октября 2018

Боюсь, что ограничение сущности может проверять только ограничение для этой записи или «глобальные» ограничения (т. Е. «Только один раз»).Ваше ограничение требует, чтобы прочитать таблицу долга и узнать количество записей и конкретных значений.Поэтому я думаю, что проще всего проверить ваши условия при отправке формы.Но вы также можете проверить эти условия непосредственно перед отображением формы и отключить виджет, который, как вы уже знаете, должен вызвать ошибку, если он выбран.

...