2016-03-28 6 views
0

Ich habe lange versucht, den Produktnamen basierend auf SKU auf benutzerdefinierten Raster des benutzerdefinierten Moduls zu erhalten. Es ist mir gelungen, den Produktnamen im Grid anzuzeigen.Produkt Name nicht in benutzerdefinierten Raster auf Filtersuche in Magento

unten ist der folgende Code ...

<?php 
    protected function _prepareCollection() 
     { 
      $collection = Mage::getModel('questionanswer/answer')->getCollection(); 
      // $collection_join = Mage::getModel('questionanswer/answer')->getCollection() 
      //  ->join(
      //   'questionanswer/question', 
      //   '`questionanswer/question`.question_id=`main_table`.question_id' 
      //   ,array('question') 
      //  ) 
      //   ->join(
      //   'catalog/product', 
      //   '`catalog/product`.entity_id=`main_table`.product_id' 
      //   ,array('sku') 
      //  ); 

      $entityTypeId = Mage::getModel('eav/entity') 
       ->setType('catalog_product') 
       ->getTypeId(); 
      $prodNameAttrId = Mage::getModel('eav/entity_attribute') 
       ->loadByCode($entityTypeId, 'name') 
       ->getAttributeId(); 
      $collection->getSelect() 
       ->joinLeft(
      array('prod' => 'catalog_product_entity'), 
      'prod.entity_id = main_table.product_id', 
      array('sku') 
      ) 
      ->joinLeft(
      array('cpev' => 'catalog_product_entity_varchar'), 
      'cpev.entity_id=prod.entity_id AND cpev.attribute_id='.$prodNameAttrId.'', 
      array('name' => 'value') 
      )->joinLeft(
      array('que'=>'questionanswer_question'), 
      'que.question_id = main_table.question_id', 
      array('question') 
      ); 

       $this->setCollection($collection); 
      return parent::_prepareCollection(); 

     } 
    ?> 

enter image description here

Aber whernever ich versuche, zu filtern, den Produktnamen suchen es mir die folgenden Fehler geben ..

a:5:{i:0;s:413:"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'where clause', query was: SELECT COUNT(*) FROM `questionanswer_question` AS `main_table` 
LEFT JOIN `catalog_product_entity` AS `prod` ON prod.entity_id = main_table.product_id 
LEFT JOIN `catalog_product_entity_varchar` AS `cpev` ON cpev.entity_id=prod.entity_id AND cpev.attribute_id=71 WHERE (`name` LIKE '%hp%') AND (`status` LIKE '%pending%')";i:1;s:6069:"#0 /home/vhost/_default/magento1.9.2/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array) 
#1 /home/vhost/_default/magento1.9.2/app/code/core/Zend/Db/Statement.php(291): Varien_Db_Statement_Pdo_Mysql->_execute(Array) 

I bin mir bewusst, dass es nach dem Spaltennamen sucht, der nicht existiert..aber wo soll ich mich ändern ...

Die Filtersuche mit allen anderen Spalten sehr gut funktioniert ...

Antwort

0

fügen Sie einfach den Code follwing

$this->addColumn('names',array(
          'header' => 'Product Name', 
          'index' => 'name', 
          'filter_index'=> 'value', 
     )); 
Verwandte Themen