Мне нужно изменить раздел 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
, а затем объедините его с таблицей клиентов для получения имен клиентов.
Итак, мы создали аналогичную таблицу для гостевых пользователей (не зарегистрированных) product_alert_stock_guest со следующими столбцами:
alert_stock_id, guest_email, product_id, website_id, add_date, send_date, send_count, status
как вы можете видеть разницу, это столбец guest_email, который заменяет customer_id. возможно ли объединить (или сделать что-то похожее) эти две таблицы и затем отобразить их в одной сетке?
* 1014 спасибо *
Luca
@ JakeTheFish
в конце я не сделал объединение, но я извлек объекты оповещений о гостевых запасах аналогично обычному оповещению о запасах, я установил поле электронной почты с помощью setData ('email', $ item-> getData ('email')), а затем я добавил их в коллекцию $ с помощью addItem. У меня ошибка:
Mage :: exception ('Mage_Eav', 'Попытка добавить добавить недопустимый объект')
когда я делаю логи на обычных товарах, у меня много информации: http://pastebin.com/z7NpNJrH
вместо этого с пользовательскими пунктами оповещения о наличии на складе, у меня есть это: http://pastebin.com/KKcTeQEH
так что проблема в том, что мне нужен экземпляр Mage_Customer_Model_Customer для добавления. я мог бы создать один, но:
1) я могу заполнить атрибуты этого экземпляра обычными методами как setField (сейчас я смотрю на API и ничего подобного не вижу)
2) даже если я могу заполнить атрибуты, что произойдет, если я установлю пустые поля?