code: public function save(bool $validate = true): self
      {
          if ($validate && $this->validate()) {
              throw new Exception('Entity '.$this->__getEntityName().' data is not valid');
          }
  
          /**
           * Remove fields that not exists in DB table scheme,
           * to avoid thrown exceptions on saving garbadge fields.
           */
          $scheme = \array_keys($this->getScheme());
          foreach ($this->data as $key => $value) {
              if (!\in_array($key, $scheme, true)) {
                  unset($this->data[$key]);
              }
          }
  
          if ($this->getId()) {
              $this->medoo->update($this->getTable(), $this->data, ['id' => $this->getId()]);
          } else {
              $this->medoo->insert($this->getTable(), $this->data);
              $this->setId($this->medoo->id());
          }
          $this->sentry->breadcrumbs->record([
              'message' => 'Entity '.$this->__getEntityName().'::save()',
              'data' => ['query' => $this->medoo->last()],
              'category' => 'Database',
              'level' => 'info',
          ]);
  
          return $this;
      }
docs: Save entity data in db.
  
  @param bool $validate
  
  @throws Exception if entity data is not valid
  
  @return Entity