2010-09-02 5 views
4

J'ai travaillé sur un module personnalisé qui a un backend pour admin. Jusqu'à présent, cela fonctionnait parfaitement, tout comme les modules clients, mais maintenant je suis coincé avec ça. Ma table personnalisée enregistre l'identifiant client et je peux afficher le nom du client dans chaque ligne de la grille. Jusqu'à présent, je suis en mesure de montrer l'identité, je sais que je devrais préparer la collection, mais je n'ai pas la moindre idée. Si j'utilise join, cela ne fonctionne que pour les modèles du même module. Je l'ai essayé ceci:Magento Collection Joindre entre différents modules

$collection = Mage::getModel('mymodule/mymodel')->getCollection()->getSelect() 
    ->join(
     'customer_entity', 
     'main_table.customer_id = customer_entity.entity_id', array('customer_name' => 'email')); 

Si j'imprimer la requête ressemble à ceci

SELECT `main_table`.*, `customer_entity`.`email` AS `customer_name` FROM 
`uhma_comunidad_question` AS `main_table` INNER JOIN `customer_entity` ON 
main_table.customer_id = customer_entity.entity_id 

mais est rien retour, la collection est nulle, si je copie ce sql et le coller dans phpmyadmin cela fonctionne parfait, ce que je suis absent ici

Merci pour l'aide.

Répondre

9

simple, si vous utilisez enchaînant pour getSelect() il ne fonctionne pas, vient d'ajouter une autre ligne

$collection = Mage::getModel('mymodule/mymodel')->getCollection(); 
$collection->getSelect() 
    ->join(
    'customer_entity', 
    'main_table.customer_id = customer_entity.entity_id', array('customer_name' => 'email')); 

fonctionner parfaitement

1
$collection = Mage::getModel('mymodule/mymodel')->getCollection()->getSelect() 
->join(
    'customer_entity', 
    'main_table.customer_id = customer_entity.entity_id', array('customer_name' => 'email')); 
Questions connexes