У мене є власна таблиця з посиланням на товар product_id
. Тепер я хотів би показати свою інформацію про товар (ску, ім’я) у своїй резервній сітці , але я не впевнений, яка найкраща практика для цього?
Моя найкраща здогадка SKU
наступна:
$collection->join(
'catalog/product',
'product_id=`catalog/product`.entity_id',
array('product_sku' => 'sku')
)
(код з _prepareCollection()
методу в моєму класі блоку сітки)
А як щодо назви продукту? Її можна знайти в каталозі_продукт_складу_варчар. Я розумію, що ви можете досить легко отримати його, якщо ви базуєтесь на власній моделі ресурсів та колекції, 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?