我必须修改库存警报的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)即使我可以填充属性,如果我设置空白字段会发生什么?
答案 0 :(得分:2)
Magento提供了以下方法:
joinAttribute
joinField
joinTable
但是连接表应该有一些类似的id。
尝试这样的事情:
$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。