diff --git a/README.md b/README.md index b944165..95c61af 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Latest Version on Packagist](https://img.shields.io/badge/packagist-v1.1.3-blue)](https://packagist.org/packages/coopbelvedere/laravel-form-maker) +[![Latest Version on Packagist](https://img.shields.io/badge/packagist-v1.1.4-blue)](https://packagist.org/packages/coopbelvedere/laravel-form-maker) [![Build Status](https://travis-ci.org/CoopBelvedere/laravel-form-maker.svg?branch=master)](https://travis-ci.org/CoopBelvedere/laravel-form-maker) [![StyleCI](https://github.styleci.io/repos/156127313/shield?branch=master)](https://github.styleci.io/repos/156127313) diff --git a/src/Repositories/NodeRepository.php b/src/Repositories/NodeRepository.php index 03c840c..50495b1 100644 --- a/src/Repositories/NodeRepository.php +++ b/src/Repositories/NodeRepository.php @@ -72,22 +72,15 @@ public function all(Model $parent, ?string $type = null): Collection /** * Build a node model with label eager loaded. * - * @param object|null $node - * @return Node|null + * @param object $node + * @return Node */ - protected function buildNodeModel(?object $node): ?Node + protected function buildNodeModel(object $node): Node { - if (is_null($node)) { - return null; - } - $label = $this->hydrateLabel($node); $this->removeAttributes('label', $node); $node = $this->hydrate($node); - - if ($label) { - $node->setRelation('label', $label); - } + $node->setRelation('label', $label); return $node; } @@ -133,7 +126,9 @@ public function find(Model $parent, $nodeKey, array $columns): ?Node }); } - return $this->buildNodeModel($query->first()); + $node = $query->first(); + + return is_null($node) ? null : $this->buildNodeModel($node); } /** diff --git a/src/Traits/Nodes/HasLabel.php b/src/Traits/Nodes/HasLabel.php index d326053..770b035 100644 --- a/src/Traits/Nodes/HasLabel.php +++ b/src/Traits/Nodes/HasLabel.php @@ -15,6 +15,10 @@ trait HasLabel */ public function addLabel(string $text): LabelerContract { + if ($this->relationLoaded('label')) { + $this->unsetRelation('label'); + } + $label = $this->nodeRepositoryProvider->getInstanceOf($this, 'label'); $label->withText($text)->save();