У меня есть пользовательская таблица со ссылкой на продукт product_id
. Теперь я хотел бы показать информацию о продукте (sku, name) в своей сетке бэкэнда , но я не уверен, что лучше всего делать это?
Моя лучшая догадка SKU
заключается в следующем:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
(код из _prepareCollection()
метода в моем классе блока сетки)
Но как насчет названия продукта? Его можно найти в catalog_product_entity_varchar. Насколько я понимаю, вы можете легко получить его, если ваша собственная модель ресурсов и коллекция основаны на том, Mage_Eav_Model_Entity_Collection_Abstract
что вы можете использовать такие методы, как joinAttribute
. Но моя модель основана на простой таблице и расширяется, Mage_Core_Model_Resource_Db_Collection_Abstract
и нет joinAttribute
доступных методов.
Так каков наилучший способ получить название продукта в этом случае?
Спасибо за ваше время и помощь :-)
Обновление: если быть более точным, я говорил о моей модели ресурсов и коллекции. Он соответствует простой плоской таблице с несколькими атрибутами, такими как
entity_id product_id created_at user_id
Мое намерение состоит в том, чтобы сделать сетку в бэкэнде, где я показываю некоторую статистику:
ProductSku Count(ProductSku) MAX(created_at)
Насколько я знаю, лучший способ сделать это - использовать класс блока сетки и метод _prepareCollection()
.
Мой метод выглядит так:
protected function _prepareCollection()
{
// Get and set our collection for the grid
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection
->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
->addExpressionFieldToSelect('product_count', 'COUNT({{product_id}})', 'product_id')
->addExpressionFieldToSelect('newest', 'MAX({{created_at}})', array('created_at'=>'main_table.created_at'))
->getSelect()->group('product_id');
$this->setCollection($collection);
return parent::_prepareCollection();
}
Это хорошо работает для sku (который я называю product_sku в _prepareColums()
методе. Но что join
мне нужно вставить здесь, чтобы получить имя (и, например, производителя)?
Я делаю что-то не так, потому что я не могу использовать joinLeft()
?
Mage_Core_Model_Resource_Db_Collection_Abstract
и я получаю ошибкуCall to undefined method Mycompany_Module_Model_Resource_Mymodel_Collection::joinLeft()
. Я думаю, это потому, что я не использую модель ресурсов EAV?