/**
  * @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;
 }