Mit der Antwort @mpaepper konnte ich eine Abfrage erhalten, die die richtigen Informationen zurückzieht. Ich konnte es auf zwei verschiedenen Magento-Datenbanken testen und jede sah richtig aus. Jedenfalls ist es hier.
SELECT DISTINCT cc.entity_id as id, cc.value as path, cc1.value as name
FROM catalog_category_entity_varchar cc
JOIN catalog_category_entity_varchar cc1 ON cc.entity_id=cc1.entity_id
JOIN eav_entity_type ee ON cc.entity_type_id=ee.entity_type_id
JOIN catalog_category_entity cce ON cc.entity_id=cce.entity_id
WHERE cc.attribute_id = '57' AND cc1.attribute_id = '41' AND ee.entity_model = 'catalog/category';
Ich musste mich wahrscheinlich nicht eav_entity_type anschließen, aber ich werde diese Abfrage wahrscheinlich wieder in verschiedenen Versionen von Magento verwenden, sodass ich denke, dass dies dazu beiträgt, die Abfrage wiederverwendbar zu halten.
Ok, hier sind die Tabellen und was Sie tun müssen (ich lasse Sie den MySQL-Join-Spaß für sich selbst machen;)):
catalog_category_entity
ist die Basistabelle mit Ihrer Kategorie-ID (entity_id
).Sie müssen dann die Attribut-IDs für
name
undurl_path
aus der Tabelle identifiziereneav_attribute
.In meinem Fall hat die
attribute_code
name
for entity_type_id 3 (für mich 3 Kategorien, schauen Sie in der Tabelle eav_entity_type nach) dieattribute_id
41. In meinem Fall hat dieattribute_code
url_path
for entity_type_id 3 die attribute_id 57.Beide
name
undurl_path
sind vom Typ varchar, daher finden Sie ihre Werte incatalog_category_entity_varchar
(Filter für attribute_id und entity_id, wobei entity_id die entsprechende ID der Kategorie ist).Daher müssen Sie die
catalog_category_entity
Tabelle verwenden undcatalog_category_entity_varchar
zweimal mit derentity_id
Bedingung as join verbinden und die attribute_ids angeben, nach denen Sie suchen können. Alternativ können Sie weitere Verknüpfungen durchführen, sodass Sie die IDs vorher nicht nachschlagen, sondern mitmachen.Habe Spaß! :) :)
quelle
quelle
Verwenden Sie die folgende Abfrage, um alle Hauptkategorien abzurufen
Ändern Sie die Stufe entsprechend
quelle
Um Magento-Kategoriedaten direkt aus der Datenbank abzurufen, verwende ich Folgendes:
Attribute_ids unterscheiden sich von System zu System. Hier benutze ich 41 und 42.
Um die richtigen Attribut-IDs für den Kategorienamen und den Kategoriestatus von einer Magento-Site zu ermitteln, verwende ich:
Indem Sie {datatype} durch 'varchar' ersetzen, können Sie die attribute_id für den Kategorienamen und mit 'int' die attribute_id für den Kategoriestatus abrufen. Sie können jede Kategorie entity_id durch {eid} ersetzen.
Dies kann in einem Editor oder in der Befehlszeile mit sed wie folgt erfolgen:
Angenommen, wdb ist ein Alias für die MySQL-Datenbankverbindung Ihrer Website wie folgt:
Dann kannst du rennen
Und bekomme
Und Renn
Und bekomme
Hier sehen Sie die notwendigen Nummern 41 und 42.
Die gleiche Technik kann für Magento-Produkte verwendet werden.
quelle
In Magento 2 ist entity_type_id in der Tabelle catalog_category_entity_varchar nicht verfügbar. Daher muss ich googeln und die Zwischentabelle eav_attribute suchen, um das zu erhalten, was ich benötige. Entity_id wird in Magento 2 auch durch Row_Id ersetzt
Ich möchte Ihnen allen danken, damit ich das bekomme, was ich brauche. :) :)
quelle
Für Magento 2. So erhalten Sie eine vollständige Liste der Kategorienamen mit ihren IDs und URL-Pfaden:
Dies ist nach Kategorie-ID sortiert. Wenn Sie es nach Namen bestellen möchten, ändern Sie "ORDER BY entity_id" in "ORDER BY ccev1.value".
quelle