Magento 1 – wyciąganie z bazy danych cen produktu cz. 1

Ostatnio otarłam się o temat modyfikacji atrybutów w magento za pomocą skryptu sql. Nie od dziś wiadomo, że im większy silnik tym więcej relacji, a co za czym idzie większe zamieszanie. Co do nazewnictwa tabel magento jest dość intuicyjne, jednak jest ich tyle, że nie trudno o zawrót głowy.

Zacznijmy może od tego czym jest w ogóle model EAV (Encja-Atrybut-Wartość). Jest to model, który upraszcza opisywanie encji z potencjalnie wieloma atrybutami, co do których w dodatku nie potrzebujemy mieć stałego dostępu. Brzmi enigmatycznie, ale poniższy UML, bazujący na strukturze Magento, powinien zaprezentować to przejrzyściej.

Stwórzmy więc proste zapytanie, które pobierze cenę produktu dowolnie wybranego przez nas produktu:

SELECT 
    cped.value,  cped.store_id
FROM
    eav_entity_type eet
        JOIN
    eav_attribute ea ON eet.entity_type_id = ea.entity_type_id
        AND ea.attribute_code = 'price'
        AND eet.entity_type_code = 'catalog_product'
        JOIN
    catalog_product_entity_decimal cped ON ea.attribute_id = cped.attribute_id
WHERE
    cped.entity_id = 167
FROM
    eav_entity_type eet
        JOIN
    eav_attribute ea ON eet.entity_type_id = ea.entity_type_id
        AND ea.attribute_code = 'price'
        AND eet.entity_type_code = 'catalog_product'
        JOIN
    catalog_product_entity_decimal cped ON ea.attribute_id = cped.attribute_id
WHERE
    cped.entity_id = [id_produktu]

Wynikiem zapytania będzie wskazanie konkretnych cen produktu dla każdego ze storów. Mowa oczywiście o cenie podstawowej. Jeśli chodzi o promocje i tzw. „tier prices”, temat jest dużo bardziej skomplikowany i opisze go w innym artykule 🙂

Dziękuję, że poświęciłeś swój czas na przeczytanie tego artykułu, jeśli masz jeszcze chwilę, podziel się swoimi wrażeniami i >>zostaw komentarz<< w wątku do tego posta.