code: private function buildChildOperationButton($idParameter, $itemId, $href, $label, $name, $icon, $attributes, $table)
      {
          $modelId = ModelId::fromValues($table, $itemId);
  
          $url = $href . '&amp;' . $idParameter . '=' . $modelId->getSerialized();
          // If id parameter different, we have to override it in the URL.
          if ('id' !== $idParameter) {
              $url .= '&amp;id=';
          }
          $url = $this->controller->addToUrl($url);
          // If id parameter different, we have to clean out the id in the URL now.
          if ('id' !== $idParameter) {
              $url = preg_replace('#(&amp;)id=(?:&amp;)?#', '$1', $url);
          }
  
          $title = sprintf($label ?: $name, $itemId);
          return sprintf(
              '<a href="%1$s" title="%2$s"%3$s>%4$s</a> ',
              $url,
              specialchars($title),
              $attributes,
              $this->iconBuilder->getBackendIconImageTag($icon, $label)
          );
      }
docs: This method exists only for being compatible when MetaModels are being used as child table from DC_Table context.
  
  @param string $idParameter The id parameter in use.
  
  @param string $itemId      The current data row.
  
  @param string $href        The href to be appended.
  
  @param string $label       The operation label.
  
  @param string $name        The operation name.
  
  @param string $icon        The icon path.
  
  @param string $attributes  The button attributes.
  
  @param string $table       The table name.
  
  @return string