code: private function fetchPropertiesFor($inputScreenId, IMetaModel $metaModel): array
      {
          $builder = $this->connection->createQueryBuilder();
          return array_map(function ($column) use ($inputScreenId, $metaModel) {
              if ('attribute' !== $column['dcatype']) {
                  return $column;
              }
              if (!($attribute = $metaModel->getAttributeById($column['attr_id']))) {
                  // @codingStandardsIgnoreStart
                  @trigger_error(
                      'Unknown attribute "' . $column['attr_id'] . '" in input screen "' . $inputScreenId . '"',
                      E_USER_WARNING
                  );
                  // @codingStandardsIgnoreEnd
                  return $column;
              }
              $column = array_merge(
                  $column,
                  $attribute->getFieldDefinition($column),
                  ['col_name' => $attribute->getColName()]
              );
  
              return $column;
          }, $builder
              ->select('*')
              ->from('tl_metamodel_dcasetting')
              ->where('pid=:pid')
              ->andWhere('published=:published')
              ->setParameter('pid', $inputScreenId)
              ->setParameter('published', 1)
              ->orderBy('sorting')
              ->execute()
              ->fetchAll(\PDO::FETCH_ASSOC));
      }
docs: Fetch all properties for the passed input screen.
  
  @param string     $inputScreenId The input screen to obtain properties for.
  @param IMetaModel $metaModel     The MetaModel to fetch properties for.
  
  @return array