Details
-
Type:
New Feature
-
Status:
Resolved
-
Priority:
Trivial
-
Resolution: Won't Fix
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: ORM
-
Labels:None
Description
Currently there is no constraint check for entities that depends another one.
I always check the dependencies using repository. Something like this:
$childRepository = $em->getRepository('Child');
$parent = $em->getReference('app:Parent', $id);
$children = $childRepository->findBy(array('parent' => $parent));
if ($children) {
throw new Exception('You can not delete this record. There are records related');
}
$em->remove($parent);
$em->flush();
This exception could be thrown in $em->flush(); or could look like:
try {
$parentEntity = $em->gerReference('ParentEntity', $id);
$em->remove($parentEntity);
$em->flush();
catch (SomeORMNamespace\ConstraintException $e) {
echo $e->getMessage(); //outs: You cannot remove this entity. There is another one related.
}
I think this functionality could be implemented through metadata on any sides of the relationship or on the @Entity mapping.
@Entity(children={'Child'}) //this is not a good attr name =)
class Parent {}
I know that is more app business logic related, but is it possible to implement this feature in next releases?
This is responsiblity of the the application developer.
You can implement this generically using parts of the API shown below: