неактивные поля БД, если для одного из них установлено значение true php - PullRequest
0 голосов
/ 06 декабря 2018

Есть ли способ автоматически установить значение false для других полей базы данных, если для одного из них установлено значение true?

Например:

User
----

admin
is_super_admin
is_coach_admin

Пользователь может быть только одним иззначения выше.Если я установлю true для администратора, я хочу, чтобы is_super_admin и is_coach_admin были установлены в false автоматически.Я имею в виду, чтобы не устанавливать в бэкэнде.Есть ли способ?По крайней мере, лучшее для доктрины Symfony:)

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете добиться проверки вашей бизнес-логики (если одно значение истинно, другие должны быть ложными) с помощью выражений Symfony:

https://symfony.com/doc/3.4/reference/constraints/Expression.html

# src/AppBundle/Resources/config/validation.yml
AppBundle\Model\User:
    properties:
        isAdmin:
            - Expression:
                expression: "this.isSuperAdmin() == false"
                message: "Admin cannot be a super admin also"

Но еслиВы хотите установить значение одного поля на основе другого поля. Можно использовать события Symfony.

   $builder->addEventListener(
        FormEvents::SUBMIT,
        function(FormEvent $event) {
            $form = $event->getForm(); 
            $data = $event->getData();             

            if ($data->isAdmin()){
                $form->get('is_super_admin')->setData(false);
                $form->get('is_coach_admin')->setData(false);
            }
        }
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...