Magento加入两个不同列的表

时间:2011-11-30 10:48:23

标签: magento-1.4 magento-1.5 magento

我必须修改库存警报的adminhtml部分。通常对于单个产品,检索已注册该功能的警报的注册客户:

protected function _prepareCollection()
{
    $productId = $this->getRequest()->getParam('id');
    $websiteId = 0;
    if ($store = $this->getRequest()->getParam('store')) {
        $websiteId = Mage::app()->getStore($store)->getWebsiteId();
    }
    $collection = Mage::getModel('productalert/stock')
        ->getCustomerCollection()
        ->join($productId, $websiteId);
    $this->setCollection($collection);
    return parent::_prepareCollection();
}

这个(据我所知)对表product_alert_stock进行查询,其中包含以下列:

alert_stock_id, customer_id, product_id, website_id, add_date, send_date, send_count, status  

然后将其与customer表连接以检索客户名称。

我们为访客用户(未注册),product_alert_stock_guest创建了一个类似的表格,其中包含以下列:

alert_stock_id, guest_email, product_id, website_id, add_date, send_date, send_count, status

正如您所看到的,区别在于取代customer_id的列guest_email。是否有可能加入(或做类似的)这两个表,然后将它显示在同一个网格上?

感谢名单

卢卡


@JakeTheFish 最后我没有加入,但我检索了类似常规库存提醒的客户库存提醒对象,我通过setData设置电子邮件字段('email',$ item-> getData('email')) ,然后我通过addItem将它们添加到$ collection。我有一个错误: Mage :: exception('Mage_Eav','尝试添加添加无效对象') 当我登录常规库存警报项目时,我有很多信息:http://pastebin.com/z7NpNJrH 而是使用自定义访客库存提醒项目,我有:http://pastebin.com/KKcTeQEH 所以问题是我需要一个Mage_Customer_Model_Customer实例来添加。我可以创建一个但是:

1)我可以使用普通方法填充该实例的属性作为setField(我现在正在查看API,我没有看到类似的东西)

2)即使我可以填充属性,如果我设置空白字段会发生什么?

1 个答案:

答案 0 :(得分:2)

Magento提供了以下方法:

joinAttribute
joinField
joinTable

但是连接表应该有一些类似的id。

基于这两个链接12

尝试这样的事情:

$selectFoo = Mage::getResourceModel('model/foo')->getSelect();
$selectBar= Mage::getResourceModel('model/bar')->getSelect();
$mergedFooBar = $selectFoo->union(array($selectBar));

或者您可以将元素添加到集合中:

$collection->addItem($item);

但是,你有2个不同的类,我不想要它们如何合并在一个集合中,我想如果你想要联合2个不同的实体,你应该让那些2个子类成为第三类,它们之间的区别是电子邮件和customer_id。