사용자가 상호 상태를 지정하고 다른 사용자를 선택할 수있는 기능을 구현하려고합니다. 마치 페이스 북에서와 마찬가지입니다.Doctrine - onFlush 이벤트 리스너에서 이전 값 가져 오기
내 데이터베이스 스키마와 같은 것입니다 :
UserInfo
기업 :
class UserInfo
{
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="user_info")
*/
protected $user;
/**
* @ORM\Column(type="text", nullable=true)
* @Assert\NotBlank
*/
protected $status; //Value taken from a dropdown list
/**
* @ORM\OneToOne(targetEntity="User", inversedBy="relationship_with_table")
*/
protected $relationship_user;
}
User
기업 :
class User
{
/**
* @ORM\OneToOne(targetEntity="UserInfo", mappedBy ="user", cascade={"persist","remove"})
*/
protected $user_info;
/**
* @ORM\OneToOne(targetEntity="UserInfo", mappedBy="relationship_user")
*/
protected $relationship_with_table;
}
UserInfoType
:
class UserInfoType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $option)
{
$builder
->add("birthday", "birthday")
->add("gender", "choice", array("choices" => array("0" => "Male", "1" => "Female")))
->add("status", "choice", array("choices" => array(
"Single" => "Single",
"In relationship" => "In relationship",
"Engaged" => "Engaged",
"Married" => "Married"
)))
->add("relationship_user", "thrace_select2_entity", array(
"class" => 'Zgh\FEBundle\Entity\User',
'label' => 'User',
'empty_value' => 'Select user',
"configs" => array(
"width" => '100%',
),
))
->add("city", "text")
->add("work", "text")
->add("facebook", "url")
->add("twitter", "url")
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
"data_class" => 'Zgh\FEBundle\Entity\UserInfo',
"cascade_validation" => true,
));
}
public function getName()
{
return "user_info";
}
}
이제 이벤트 리스너가 있습니다. 사용자 상태를 확인하고 다른 사용자를 변경합니다. 예상대로 작동합니다. 그러나 사용자가 (A)와 결혼하여 (B)와 결혼 한 경우 사용자 (A)는 여전히 결혼 한 사람을 얻고 재설정하지 않습니다.
내가 원하는 것은 (B)에 사용자 관계를 연결하기 전에, (A)를 검색하고 재설정하려고합니다. onFlush
이벤트 내에서 어떻게 수행 할 수 있습니까?
감사합니다. 그것은'$ uow-> getEntityChangeSet ($ entity)'와 함께 작동했습니다. 변경된 모든 필드가있는 연관 배열을 반환했습니다. 그리고'computeChangeSet()'도 호출 할 필요가 없다. 다시 한번 감사드립니다. –
좋아요! 업데이트 해주셔서 감사합니다! – SecretUsername