protected function createEntity($entity, $need = true)
{
if ($entity instanceof IEntity) {
if ($model = $entity->getModel(false)) {
$repository = $model->getRepositoryForEntity($this->parent);
$repository->attach($this->parent);
} elseif ($model = $this->parent->getModel(false)) {
$repository = $model->getRepositoryForEntity($entity);
$repository->attach($entity);
}
return $entity;
} else {
$foundEntity = $this->getTargetRepository()->getById($entity);
if (!$foundEntity && $need) {
throw new InvalidStateException("Entity with primary value '{$entity}' was not found.");
}
return $foundEntity;
}
}