Klasse *ReadServiceDatabaseReader* lässt sich nicht überladen

Thema wurde von BigRib, 2. November 2021 erstellt.

  1. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    Kann es sein, dass man die Klasse "ReadServiceDatabaseReader" nicht überladen kann? Es kommt die Fehlermeldung:

    Code:
    
    Class 'tndReadServiceDatabaseReader_parent' not found
    
    /GXModules/Thrownatur/AdminCombiCollections/Admin/Overloads/ReadServiceDatabaseReader/tndReadServiceDatabaseReader.inc.php:2
    
    Für das Forum gekürzte Datei:

    Code:
    <?php
    class tndReadServiceDatabaseReader extends tndReadServiceDatabaseReader_parent {
        public function getImageLists(int $listId = null): array
        {
            $result  = [];
    
            return $result;
        }
    }
    GX4.5 Beta 2
     
  2. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.660
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @BigRib Die Services sind nicht überladbar, hier wäre es gut zu wissen was du vorhast, eventuell gibt es eine andere Möglichkeit.
     
  3. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    @Till (Gambio)

    Wir haben ca. 10000 Varianten im Schnitt im Shop, das ist sehr unübersichtlich. Deswegen habe ich mir was gebaut, was aus Bildern automatisch Kollektionen erstellt und diese werden auch einem Artikel zugeordnet.

    Da ich nun nur noch die Kollektionen benötige, die dem jeweiligen Artikel zugeordnet sind, muss ich die Datenbankabfrage dementsprechend abändern. Das klappt auch einwandfrei.

    Code:
    class tndReadServiceDatabaseReader extends tndReadServiceDatabaseReader_parent {
        public function getImageLists(int $listId = null): array
        {
            $result  = [];
    
            $referer_url = $_SESSION['user_info']['referer_url'];
            $parsing_url = parse_url($_SESSION['user_info']['referer_url'],  PHP_URL_QUERY);
            if(isset($parsing_url)) {
              parse_str($parsing_url, $parcing_array);
            }
    
    
            //trigger_error(var_dump($parcing_array["products_id"]) , E_USER_ERROR);
    
            $productId = (int) $parcing_array["products_id"];
            $builder = $this->queryBuilder
                            ->select('product_image_list.product_image_list_id, product_image_list.product_image_list_name')
                            ->from(self::IMAGE_LIST_TABLE_NAME)
                            ->join('product_image_list_to_products', 'product_image_list_to_products.product_image_list_id = product_image_list.product_image_list_id', 'left');
    
            if (!empty($productId)) {
    
                $builder->where(['product_image_list_to_products.' . self::PROPERTY_COMBI_PRODUCTS_ID_COLUMN => $productId]);
            }
    
            if ($listId !== null) {
    
                $builder->where(['product_image_list.' . self::LIST_ID_COLUMN => $listId]);
            }
    
            $entries = $builder->get()->result_array();
    
            if (count($entries)) {
    
                foreach ($entries as $entry) {
    
                    [
                        self::LIST_ID_COLUMN   => $listId,
                        self::LIST_NAME_COLUMN => $listName
                    ] = $entry;
    
                    $result[] = $this->createImageListDto($listId, $listName);
                }
            }
    
            return $result;
        }
    }
     
  4. BigRib

    BigRib Erfahrener Benutzer

    Registriert seit:
    26. September 2018
    Beiträge:
    248
    Danke erhalten:
    48
    Danke vergeben:
    29
    @Till (Gambio)
    Hast Du was gefunden?

    Ich würde das was ich da baue, gern auch einen Mitbewerber verfügbar machen, dann muss es aber Updatesicher sein.