model = $model; return $this; } public function saveRelationships(): void { foreach ($this->getComponents(withHidden: true) as $component) { $component->saveRelationshipsBeforeChildren(); foreach ($component->getChildComponentContainers(withHidden: $component->shouldSaveRelationshipsWhenHidden()) as $container) { $container->saveRelationships(); } $component->saveRelationships(); } } public function loadStateFromRelationships(bool $andHydrate = false): void { foreach ($this->getComponents(withHidden: true) as $component) { $component->loadStateFromRelationships($andHydrate); foreach ($component->getChildComponentContainers(withHidden: true) as $container) { $container->loadStateFromRelationships($andHydrate); } } } public function getModel(): ?string { $model = $this->model; if ($model instanceof Model) { return $model::class; } if (filled($model)) { return $model; } return $this->getParentComponent()?->getModel(); } public function getRecord(): ?Model { $model = $this->model; if ($model instanceof Model) { return $model; } if (is_string($model)) { return null; } return $this->getParentComponent()?->getRecord(); } public function getModelInstance(): ?Model { $model = $this->model; if ($model === null) { return $this->getParentComponent()?->getModelInstance(); } if ($model instanceof Model) { return $model; } return app($model); } }