Blogeinträge für magento-query-builder
21.11.11Wenn 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.
Interessieren auch Sie sich für Magento? Dann informieren Sie sich doch einfach hier. Oder Sie melden Sie sich bei uns, entweder telefonisch unter +49 4105 135 03 99, per Mail an sales@initos.com oder über unser Kontaktformular.