• Home
  • Nous contacter

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab

Le blog d'Adfab
e-Commerce

Magento – Faire une jointure sur les tables eav

Certaines collections de Magento se basent sur des tables à plat, et ne proposent pas de sélectionner des attributs des tables eav aussi facilement qu’un « addAttributeToSelect » sur une collection de produit, par exemple.

On a, ci-dessous, le cas d’une collection de clients inscrits à la newsletter, sur laquelle nous allons faire une jointure sur les tables eav, à partir de son object Zend_Db_Select:

Nous avons, tout d’abord, besoin de récupérer l’id de notre attribut, que nous avons nommé « monattribut » :

/* @var $write Varien_Db_Adapter_Pdo_Mysql */
$write = Mage::getSingleton('core/resource')->getConnection('core_write');

$attribute_id = $write->select()
        ->from('eav_attribute', 'attribute_id')
        ->where('entity_type_id = ?', 1)
        ->where('attribute_code = ?', 'monattribut')
        ->query()
        ->fetchColumn(0);

Une fois ceci fait, nous allons établir une jointure sur la table eav. Pour trouver la bonne, il faut regarder quel est le « backend_type » de l’attribut dans la table eav_attribute :

backend type

Nous pouvons ensuite établir notre jointure sur la table customer_entity_varchar comme ceci:

$collection->getSelect()
        ->joinLeft(
            array(
                'customer_monattribut_table' => 'customer_entity_varchar'
            ),
            'customer_monattribut_table.entity_id = main_table.customer_id AND customer_monattribut_table.attribute_id = ' . $attribute_id,
            array(
                'monattribut' => 'customer_monattribut_table.value'
            )
        );

Nous avons effectué une jointure sur la table customer_entity_varchar, mais il est tout a fait possible de ré-effectuer cette jointure à plusieurs reprises pour récupérer plusieurs champs du même backend_type.

01/07/2015 11 MIN READ BY: Arnaud HOURS 0 COMMENT
SHARE
LIRE LA SUITE

Arnaud HOURS

Concevoir le web comme les jeux vidéos : les 3C –> Design the web with video games methods: the 3C

I believe Hack 'n Fly

VOUS POURRIEZ AIMER

e-Commerce Votre premier module Prestashop

CMS e-Commerce J’ai testé pour vous Drupal Commerce !

e-Commerce L'actualité AdFab Magento Fuse

e-Commerce Magento – Étendre les filtres de recherche dans le back-office

e-Commerce Magento, layout, action et bloc en cache

Backend Développement e-Commerce Sylius : Concevoir un système de badges

A propos d’Adfab

Nous sommes un studio de production digitales et d’innovation digitales au service des agences et des annonceurs
Nous recherchons le scintillement dans les regards et le plaisir de réalisations sur-performantes
Nous sommes techno-agnostiques
Nous sommes Adfab

Le blog d'Adfab
Copyright © 2018 Adfab Connect