과제가있는 과목이있는 법인 학생이 있습니다. 불행히도 매핑이 이상하고 나는 지금 그것을 변경할 수는 없지만 과제는 어느 주제에 속해 있는지, 그리고 주제는 그들이 속한 학생이 누구인지를 알고 있으며 그 반대가 아닙니다. 학생은 과목을 알지 못하며 과목은 과제를 알지 못합니다. 더 많은 것은 onDelete = CASCADE가 있습니다. "기본적으로 학생은 과제가있는 과목과 함께 삭제 될 것입니다. 그리고이 문제가 없습니다.preRemove로 entiry를 제거하기 전에 확인하십시오.
학생에게 공개 과제가있는 수강인이 있는지 확인하고 싶습니다. 학생은 삭제하거나 대상이 될 수 없다.
내가 대상 학생, 및 할당을 제거 할 열려있는 대상이없는 경우. 나는이를 수행 할 수 있습니다? 나는 이미이 생각하는 방법
이러한 백본,
public function preRemove(LifecycleEventArgs $args)
{
$em = $args->getEntityManager();
$student = $args->getEntity();
if ($student instanceof Student) {
$subjects = $em->getRepository(Subject::class)->findBy(['student' => $student]);
foreach ($subjects as $subject) {
if ($subject instanceof Subject) {
$assignments = $em->getRepository(Assignment::class)->findBy(['subject' => $subjects]);
foreach ($assignments as $assignment) {
if ($assignment->isCompleted()) {
echo $assignment." - CAN DELETE<br>";
} else {
echo $assignment." - CAN'T DELETE, THERE ARE OPEN ASSIGNMENTS!<br>";
}
}
}
}
}
}
이제는 무엇이 올바른 방법일까요? true 또는 false를 반환하면 작업을 중지하거나 계속할 수 있습니까? 아니면 특정 교리 정보를 다시 제거해야하는 등의 작업을해야합니까? 나는 다음에해야 할 일을 100 % 확신하지 못합니다.
할당을 삭제할 수없는 경우 사용자 지정 예외를 만들어야합니다.
아무도 도와 줄 수 있습니까? 나는 그것을 많이 고맙게 생각할 것이다.