Saya telah menambahkan satu filter dalam Metode _getProductCollection()
kelas Mage_Catalog_Block_Product_List
sebagai berikut.
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection->getSelect()->joinInner(
array('cpe' => 'catalog_product_entity'),
'e.entity_id = cpe.entity_id'
)
->where("cpe.type_id = 'simple'");
...
}
Kode di atas berfungsi dengan baik pada Magento Versi 1.7. Tetapi setiap kali saya menulis kode berikut, itu memberi
Kolom tidak ditemukan: 1054 Kolom tidak dikenal 'e.type_id' di 'where clause'
kesalahan.
Kode (yang tidak berfungsi).
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Sekarang Pertanyaan .
- Apakah akan ada dampak kinerja jika saya menggunakan kode kerja pertama?
- apakah ada cara lain untuk berkeliling untuk memiliki filter produk yang tepat?
MEMPERBARUI:
Setiap kali saya menerapkan kode berikut dan menggunakan rwd
tema, saya tidak mendapatkan kesalahan. Tapi setiap kali saya pengguna default
tema, saya mendapatkan kesalahan di bawah ini,
Kode
protected function _getProductCollection()
{
...
$this->_productCollection = $layer->getProductCollection();
$this->_productCollection
->addAttributeToSelect('type_id')
->addAttributeToFilter('type_id','simple');
...
}
Kesalahan
SQLSTATE [42S22]: Kolom tidak ditemukan: 1054 Kolom tidak dikenal 'e.type_id' in 'where clause', permintaannya adalah: SELECT FLOOR ((ROUND ((e.min_price) * 1, 2)) / 10) + 1 AS
range
, COUNT (*) SEBAGAIcount
DARIcatalog_product_index_price
ASe
INNER JOINcatalog_category_product_index
AScat_index
ON cat_index.product_id = e.entity_id DAN cat_index.store_id = 1 AND cat_index.visibility DI (2, 4) DAN cat_index.category_id = '3' WHERE (e
.type_id
IN ( 'sederhana' )) AND (e.website_id = '1') AND (e.customer_group_id = 0) DAN (e.min_harga TIDAK NULL) KELOMPOK DENGAN LANTAI ((ROUND ((e.min_price) * 1, 2)) / 10) +1 PESANAN DENGAN LANTAI ((ROUND ((e.min_harga) * 1, 2)) / 10) + 1 ASC
sumber
Jawaban:
Saya pikir itu:
Harus bekerja, Anda tidak perlu menambahkan
type_id
untukselect
karena merupakancatalog_product_entity
kolom dan itu diambil secara default. Saya selalu menyarankan untuk mencatat permintaan terakhir untuk mendapatkan ide terbaik tentang apa yang terjadi:BTW: Blok kode pertama tidak masuk akal sama sekali karena Anda bergabung dengan tabel utama (
catalog_product_entity
) untuk dirinya sendiri.sumber