शिक्षक को हटाए जाने पर $isSuspended को true पर कैसे सेट करें?

<?php
class Teacher {

    /**
     *@ORM\OneToMany(targetEntity="Activities", mappedBy="teacher")
     */
    protected $activities;
}

class Activities {
    /**
     * @ORM\ManyToOne(targetEntity="Teacher", inversedBy="activities")
     * @ORM\JoinColumn(name="teacher_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
     */
    protected $teacher;

    /**
     * Activities are suspended when there is not teacher 
     */
    protected $isSuspended = false;
}
0
sebastian_t 16 जुलाई 2020, 19:29

1 उत्तर

सबसे बढ़िया उत्तर

यह भाग onDelete="SET NULL" डेटाबेस स्तर पर काम करता है, इसलिए $isSuspended फ़ील्ड बदलने के लिए, आप postRemove सिद्धांत घटना के लिए एक श्रोता बना सकते हैं।

use Doctrine\ORM\Event\LifecycleEventArgs;

public function postRemove(LifecycleEventArgs $event)
{
    $entity = $event->getEntity();
    if ($entity instanceof Teacher) {
        foreach($entity->getActivities() as $activity) {
            $activity->setIsSuspended(true);

            $event->getEntityManager()->persist($activity);
        }

        $event->getEntityManager()->flush();
    }
}
1
Ihor Kostrov 16 जुलाई 2020, 17:09