diff --git a/src/Repository.php b/src/Repository.php index 1bbadc4..084330a 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -158,26 +158,20 @@ class Repository implements RepositoryInterface throw new \Exception("Your entity class `" . get_class($entity) . "` cannot match entity type of repository `{$this->entityClass}`"); } - $primaryKeyDefinition = Ulmus::resolveEntity($this->entityClass)->getPrimaryKeyField(); - - if ( $primaryKeyDefinition !== null ) { + if ($primaryKeyDefinition = Ulmus::resolveEntity($this->entityClass)->getPrimaryKeyField()) { $pkField = key($primaryKeyDefinition); $this->eventExecute(Event\Query\Delete::class, $this, $entity); return $this->deleteFromPk($entity->$pkField); } + elseif ($compoundKeyFields = Ulmus::resolveEntity($this->entityClass)->getCompoundKeyFields()) { + $this->eventExecute(Event\Query\Delete::class, $this, $entity); + + return $this->deleteFromCompoundKeys(array_combine($compoundKeyFields->column, array_map(fn($column) => $entity->$column, $compoundKeyFields->column))); + } else { - $compoundKeyFields = Ulmus::resolveEntity($this->entityClass)->getCompoundKeyFields(); - - if ($compoundKeyFields) { - $this->eventExecute(Event\Query\Delete::class, $this, $entity); - - return $this->deleteFromCompoundKeys(array_combine($compoundKeyFields->column, array_map(fn($column) => $entity->$column, $compoundKeyFields->column))); - } - else { - throw new \Exception(sprintf("No primary key found for entity %s", $this->entityClass)); - } + throw new \Exception(sprintf("No primary key found for entity %s", $this->entityClass)); } }