code: public function remove($tableName, array $criterias, $shardingKey = null)
      {
          $connection = $this->connectionManager->getConnection(
              $this->getConnectionName($tableName, $shardingKey, true),
              true
          );
  
          $shardingIdentifier = $this->getShardingIdentifier($tableName, $shardingKey);
          if (isset($shardingIdentifier)) {
              $tableName = sprintf('%1$s_%2$s', $tableName, $shardingIdentifier);
          }
  
          $deleteCriteria = $deleteCriteriaValues = array();
          foreach ($criterias as $columnName => $criteria) {
              if (is_array($criteria) && false == empty($criteria)) {
                  $deleteCriteria[] = $columnName.' IN ('.implode(',', array_fill(0, count($criteria), '?')).')';
                  $deleteCriteriaValues = array_merge($deleteCriteriaValues, $criteria);
              } else {
                  $deleteCriteria[] = $columnName.' = ?';
                  if ($criteria instanceof \Yucca\Model\ModelInterface) {
                      $deleteCriteriaValues[] = $criteria->getId();
                  } else {
                      $deleteCriteriaValues[] = $criteria;
                  }
              }
          }
          $query = 'DELETE FROM '.$tableName.' WHERE '.implode(' AND ', $deleteCriteria);
  
          $connection->executeUpdate($query, $deleteCriteriaValues);
  
          return $this;
      }
docs: @param string $tableName
  @param array  $criterias
  @param null   $shardingKey
  
  @return int
  @throws \Doctrine\DBAL\DBALException
  @throws \Exception