/** * @param DoplioDbTable $item * * @return DoplioDbTable|null */ protected function sync(DoplioDbTable $item) { if ($item->getKey() && !$item->exists) { $with = []; foreach ($item->getRelations() as $withName => $withData) { $with[] = $withName; } $item = $item->with($with)->find($item->getKey()); } return $item; }
/** * @param DoplioDbTable $item * * @return $this */ protected function flushDependencies(DoplioDbTable $item) { foreach ($item->getRelations() as $relationName => $entity) { if ($entity instanceof Collection) { foreach ($entity as $collectionEntity) { $item->{$relationName}()->save($collectionEntity); $this->flushDependencies($collectionEntity); } continue; } $item->{$relationName}()->save($entity); $this->flushDependencies($entity); } return $this; }