Magento Query Builder

veröffentlicht in Software Engineering am 21. Nov. 2011 Tags: , , , ,

Wenn man mal bei Magento schnell in der Datenbank nachschauen will, dann ist das sehr umständlich durch die EAV Datenbankstruktur. Ab und zu tauchen ein paar fertige SQL-Querys auf, die aber nicht auf jeden Shop passen. Da es ziemlich aufwändig ist, sich immer per Hand die entsprechenden Statements zusammenzubauen, haben wir ein kleines Tool geschrieben, mit dem man sich die SQL-Querys bauen lassen kann. Dafür braucht man nur PHP + Verbindung zur Datenbank.

Dieses Tool findet ihr auf GitHub:

https://github.com/OSguard/Magento-Query-Builder

Das Beispiel:

https://github.com/OSguard/Magento-Query-Builder/blob/master/example_export_all_products.php

erklärt im Wesentlichen, wie man das Script benutzen kann. Man erzeugt sich ein Objekt, auf das man zugreifen will und lädt die Attribute:

$builder = new QueryBuilder('catalog/product', array(0,1));
$builder->loadAllAttributes();

Danach wählt man aus, welche Attribute man ausgeben will:

$attr = array(
    "entity_id",
    "sku",
    "name",
    "price",
    "url_path",
    "url_key",
    "attribute_set",
    "status",
    "created_at",
    "updated_at"
    );
 
 
$builder->selectAttributes( $attr );

Man kann z.B. noch die Bedienung einschränken, damit eine WHERE-Klausel gebaut wird:

$builder->setCond( 'type_id', '=', '"simple"');

Dann kann man sich das Query ausgeben lassen:

$builder->getQuery();

In unserem Beispiel wird dann folgender SQL-Befehl erzeugt:

SELECT a.entity_id AS entity_id,
 a.sku AS sku,
 t0.value AS name ,
 t1.value AS price ,
 t2.value AS url_path ,
 t3.value AS url_key ,
 b.attribute_set_name AS attribute_set,
 t4.value AS STATUS ,
 a.created_at AS created_at,
 a.updated_at AS updated_at
	FROM
	(
	SELECT
		entity.*
	FROM 
		catalog_product_entity entity 
        WHERE 
                entity.type_id = "simple"   ) a
		    LEFT JOIN
			eav_attribute_set b
		    ON
			b.attribute_set_id=a.attribute_set_id
		    LEFT JOIN 
                        catalog_product_entity_varchar t0
                        ON 
                        t0.attribute_id= 96 AND
                        t0.entity_id=a.entity_id AND
                        t0.store_id = 0 
LEFT JOIN 
                        catalog_product_entity_decimal t1
                        ON 
                        t1.attribute_id= 99 AND
                        t1.entity_id=a.entity_id AND
                        t1.store_id = 0 
LEFT JOIN 
                        catalog_product_entity_varchar t2
                        ON 
                        t2.attribute_id= 570 AND
                        t2.entity_id=a.entity_id AND
                        t2.store_id = 0 
LEFT JOIN 
                        catalog_product_entity_varchar t3
                        ON 
                        t3.attribute_id= 481 AND
                        t3.entity_id=a.entity_id AND
                        t3.store_id = 0 
LEFT JOIN 
                        catalog_product_entity_int t4
                        ON 
                        t4.attribute_id= 273 AND
                        t4.entity_id=a.entity_id AND
                        t4.store_id = 0

Das ist keine fertige Bibliothek, die man in ein Modul einbauen kann. Aber mann kann damit z.B. Export-Scripte bauen, die auch sehr viele Produkte in Sekunden exportieren, da hier der Magento-Weg sehr langsam ist. Oder es erleichtert das Arbeiten auf der Datenbank-Konsole. Zur Zeit ist das noch eine Rohfassung, vielleicht findet sich ja der ein oder andere, der bei der Entwicklung hilft. Der Code steht unter BSD-Lizenz.

Über Markus Schneider

Als Analytiker und Informatiker ist Markus Schneider Experte für Shop- und ERP-Systeme. Dabei setzt er sein fundiertes Wissen insbesondere im Bereich der Open Source Software ein und kann verschiedene
Anwendungssysteme, z.B. Oxid eSales, OTRS, und Solr Suche, darin integrieren. Auch mit der Onlineshopsoftware Magento kennt sich Herr Schneider bestens aus. Zudem greift er auf gesammelte Erfahrungen unterschiedlicher Systeme wie Sage, SAP und speziell OpenERP / Odoo zurück.

Kommentare deaktiviert für Magento Query Builder

Kommentare sind gesperrt.