Формы Symfony — установка пустого значения для сущности с двунаправленной связью OneToOne

У меня есть объект User с двунаправленным отношением к объекту Passport

/** @Entity */
class User
{

/**
* @OneToOne(targetEntity="Passport", mappedBy="user")
* @JoinColumn(name="passport_id", referencedColumnName="id")
*/
private $passport;

// plus other fields
// plus getters and setters for all of the above...
}/** @Entity */
class Passport
{

/**
* @OneToOne(targetEntity="User", inversedBy="passport", cascade={"persist", "remove"})
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;

}

и у меня есть FormType

 /** @UserType */
$builder->add
(
'passport',
'entity',
array(
'class' => 'AppBundle\Passport',
'empty_value' => 'Please choose a passport'
)
);

поэтому при отправке формы с выбранным паспортом для пользователя, нам нужно также указать пользователя в паспорте

/** @Entity */
class User
{
//
public function setPassport($passport){
$this->passport=$passport;
if ($passport){
$passport->setUser($this);
}
}
//and other setters
}

Предположим, что у сущности User есть ссылка на сущность Passport. И теперь в форме мы хотим отменить связь (установите для паспорта значение null). Мы можем выбрать вариант empty_value, поэтому после отправки формы у пользователя не будет паспорта. Но в паспорте все равно будет ссылка на пользователя.

Можно установить UULL (null) в контроллере непосредственно перед привязкой запроса к форме, но

какое лучшее решение здесь?

Это хорошая идея иметь однонаправленные отношения в текущем случае?

-1

Решение

Похоже, что в этом случае однонаправленные отношения упростят ситуацию: как насчет опции choice_loader для поля ChoiceType, она выполняет обратный вызов функции, предоставляющей выбор, вы можете предоставить нулевой выбор и список паспортов на выбор ,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]