শিশু পণ্য বৈশিষ্ট্য অনুসারে ফিল্টার পণ্য সংগ্রহ


9

আমার 2 টি অ্যাট্রিবিউটের মতো পরিস্থিতি রয়েছে যা শিশু পণ্যকে দেওয়া হয়

1) person_height_fromএবং 2) person_height_toযার ড্রপডাউন ধরণের বৈশিষ্ট্য রয়েছে

যা কেবলমাত্র শিশু পণ্যগুলিতে বরাদ্দ করা হয় তবে পিতামাতার পণ্যগুলিতে বরাদ্দ করা হয় না,

এই বৈশিষ্ট্য সহ আমি বিভাগের পৃষ্ঠায় পণ্য সংগ্রহ ফিল্টার করতে চাই

মত length = 175

 $collection->addAttributeToFilter('person_height_from', array('lteq' => $length));

 $collection->addAttributeToFilter('person_height_to', array('gteq' => $length));

বিভাগের পৃষ্ঠায় কেবল সেই পিতামাতাদের পণ্যটি পাওয়া কি সম্ভব যা শিশু পণ্যটির উপরে মূল্য নির্ধারণ করে?

আপনার সাহায্য প্রশংসা করা হবে

উত্তর:


0

নীচে কোড ব্যবহার করুন:

$collection = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter(
        array(
            array('attribute'=> 'length', 'like' => '175')
        )
    );

$collection->getSelect()
    ->joinLeft(
        array('link_table' => 'catalog_product_super_link'),
        'link_table.product_id = e.entity_id',
        array('product_id', 'parent_id')
    );

$collection->getSelect()->group('link_table.parent_id');

foreach ($collection as $product) {
    $productIds[] = $product->getParentId();
}

$productCollection = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToFilter('entity_id', array('in' => $productIds));

উপরের কোডে সবার আগে আমি চাইল্ড পণ্যগুলি খুঁজে পাই যার দৈর্ঘ্য 175 17 এর পরে আমি সন্তানের পণ্যের সাথে যুক্ত প্যারেন্ট আইডি পেয়েছি তারপরে প্যারেন্ট প্রোডাক্ট আইডি অনুযায়ী পণ্য সংগ্রহ ফিল্টার করি।


1
এটি কি কেবল 1
বর্গ কোয়েরিতে করা

0

এখানে আমি অভ্যন্তরীণ ক্যোয়ারী সহ অনুসন্ধানের জন্য শিশু পণ্যগুলির 2 টি বৈশিষ্ট্য দিয়েছি

$collection = $observer->getEvent()->getCollection();

// check if  query is already in sql then no need to add per event
$cloneSelect = clone $collection->getSelect();
$wherePart = $cloneSelect->getPart(Zend_Db_Select::WHERE);
$excludedWherePart = 'AND (e.entity_id IN';
foreach ($wherePart as $key => $wherePartItem) {
    if (strpos($wherePartItem, $excludedWherePart) !== false) {
        return $this;
    }
}

$resource = Mage::getSingleton('core/resource');
$_readAdapter = $resource->getConnection('core_read');
$status = Mage::getSingleton('catalog/config')->getAttribute('catalog_product', 'status');
$heightTo = Mage::getSingleton('catalog/config')->getAttribute('catalog_product', 'person_height_to');
$heightFrom = Mage::getSingleton('catalog/config')->getAttribute('catalog_product', 'person_height_from');
$categoryId = Mage::registry("current_category")->getId();
$storeId = Mage::app()->getStore()->getId();

$query = $_readAdapter->select()
    ->from(array('e' => $collection->getTable('catalog/product')),array())
    ->joinInner(array(
        'at_status' => $status->getBackendTable()),
        'at_status.entity_id = e.entity_id AND at_status.store_id = 0 AND at_status.attribute_id = ' .$status->getAttributeId(),
        array()
    )
    ->joinInner(array(
        'at_stock' => $resource->getTableName('cataloginventory/stock_item')),
        'at_stock.product_id = e.entity_id AND at_stock.is_in_stock = ' . 1,
        array()
    )
    ->joinInner(array(
        'cat_index' => $collection->getTable('catalog/category_product_index')),
        'cat_index.product_id = e.entity_id AND cat_index.store_id = ' . $storeId . ' AND cat_index.category_id = ' . $categoryId,
        array()
    )
    ->joinInner(array(
        'at_person_height_to' => $heightTo->getBackendTable()),
        'at_person_height_to.entity_id = e.entity_id AND at_person_height_to.store_id = 0 AND at_person_height_to.attribute_id = ' . $heightTo->getAttributeId(),
        array()
    )
    ->joinInner(array(
        'at_person_height_from' => $heightTo->getBackendTable()),
        'at_person_height_from.entity_id = e.entity_id AND at_person_height_from.store_id = 0 AND at_person_height_from.attribute_id = ' . $heightFrom->getAttributeId(),
    array()
    )
    ->where(
        "e.type_id = 'simple' AND at_person_height_from.value <= " . $length . " AND at_person_height_to.value >= " . $length
    )
    ->join(
        array('link_table' => 'catalog_product_super_link'),
        'link_table.product_id = e.entity_id', array('parent_id')
    );

$productIds =  array_map('intval', array_unique($_readAdapter->fetchCol($query)));

// add filter here with parent ids
$collection->addAttributeToFilter('entity_id', array('in' => $productIds));

আশা করি এটি অন্যকে সহায়তা করবে এবং আরও ভাল ধারণা পাবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.