ম্যাজেন্টো - সংগ্রহের ক্রম সেট করতে অক্ষম


11

এটি সঠিকভাবে অর্ডার করা বলে মনে হচ্ছে না, আমি ভুল করছি এমন কিছু? পরামর্শ?

$componentQuantityCollection = Mage::getModel('catalog/product')->getCollection();
$componentQuantityCollection->joinField('qty',
    'cataloginventory/stock_item',
    'qty',
    'product_id=entity_id',
    '{{table}}.stock_id=1',
    'left');
$componentQuantityCollection->addAttributeToFilter('sku', array('in' => $componentSkus))->setOrder('sku','ASC');

আর একটি সংগ্রহ যা সাজানো মনে হয় না যা প্রথমের চেয়ে আলাদা:

$kitCollection = Mage::getModel('kitinventory/kitinventory')->getCollection()->addFieldToFilter('kit_sku', $sku)->setOrder('related_sku', 'DESC');

উত্তর:


42

EAV সংগ্রহগুলি বৈশিষ্ট্যগুলির সাথে কাজ করে, এখানে বাছাই করার পদ্ধতিটিও কিছুটা আলাদা

$componentQuantityCollection->addAttributeToSort('sku', 'ASC');

নন-ইএভি সংগ্রহের জন্য নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করুন

$kitCollection->getSelect()->order('related_sku DESC');
$kitCollection->setOrder('related_sku', 'DESC');

দ্বিতীয় সংগ্রহে কি?
easymoden00b

এটি একটি ফ্ল্যাট ধরণের সংগ্রহ, সুতরাং কোনও EAV এবং বৈশিষ্ট্য নেই। কীভাবে এটি সাজানো যায় সে সম্পর্কে এই উত্তরটি একবার দেখুন: stackoverflow.com/a/11354060
স্যান্ডার মঞ্জেল

আমি সেটঅর্ডার ('সম্পর্কিত_স্কু', 'ডিইএসসি') চেষ্টা করেছি; তবে এটি বাছাই করা হয়নি
easymoden00b

আমি আমার উত্তরটি সম্পাদনা করেছি
স্যান্ডার মঞ্জেল

2
@ easymoden00b এই ব্যবহার$kitCollection->getSelect()->order('related_sku DESC');
Priyank

15

আপনি এই মত সাজানোর অর্ডার যোগ করতে পারেন:

$kitCollection->getSelect()->order('related_sku DESC');

আরও তথ্য: http://www.magentocommerce.com/wiki/1_-_installation_and_configration/used_colifications_in_magento

আশা আপনাকে সাহায্য করতে পারে।


3
এটি আমার জন্য স্থির, কারণ আমি এটির মতো ব্যবহার করছিলাম->order('related_sku', 'desc');
রিকি ওডিন ম্যাথিউজ

3

এখানে অন্যান্য উত্তরের প্রসারিত করতে, $kitCollection->getSelect()->order('column DESC')সূক্ষ্ম কাজ করে তবে আপনি একাধিক কলাম যুক্ত করতে পারবেন না। উদাহরণস্বরূপ, $kitCollection->getSelect()->order('column DESC, column2 ASC')ত্রুটি হবে। এটি কলামের নামগুলি এড়ানোর জন্য ম্যাজেন্টো যে কাজটি করে তার কারণ এটি। এটি পেতে, আপনি এর Zend_Db_Exprমতো একটি ব্যবহার করতে পারেন :

$kitCollection->getSelect()->order(new Zend_Db_Expr('related_sku DESC, column2 ASC'));

1

easymoden00b, setOrder()product.As @Sande উপর Eav গঠন কারণে কাজ করছে না বলে ব্যবহার করতে addAttributeToSort()কারণ ফাংশন,

  • Magento is join multiple tables for product collection.

  • Attribute alias name at collection

  • setOrder() functionকাজ যখন এটা order expression FIELDNAME, SortOrder হয় correct

আপনি দেখতে পারেন, ম্যাজেন্টো কীভাবে ফিল্ড ওরফে তৈরি করে এবং এটি Mage_Eav_Model_Entity_ Colલેક્__bstract ক্লাসে ইভা টেবিল বৈশিষ্ট্য সম্পর্কিত

public function addAttributeToSort($attribute, $dir = self::SORT_ORDER_ASC)
{
    if (isset($this->_joinFields[$attribute])) {
        $this->getSelect()->order($this->_getAttributeFieldName($attribute).' '.$dir);
        return $this;
    }
    if (isset($this->_staticFields[$attribute])) {
        $this->getSelect()->order("e.{$attribute} {$dir}");
        return $this;
    }
    if (isset($this->_joinAttributes[$attribute])) {
        $attrInstance = $this->_joinAttributes[$attribute]['attribute'];
        $entityField = $this->_getAttributeTableAlias($attribute) . '.' . $attrInstance->getAttributeCode();
    } else {
        $attrInstance = $this->getEntity()->getAttribute($attribute);
        $entityField = 'e.' . $attribute;
    }

    if ($attrInstance) {
        if ($attrInstance->getBackend()->isStatic()) {
            $orderExpr = $entityField;
        } else {
            $this->_addAttributeJoin($attribute, 'left');
            if (isset($this->_joinAttributes[$attribute])||isset($this->_joinFields[$attribute])) {
                $orderExpr = $attribute;
            } else {
                $orderExpr = $this->_getAttributeTableAlias($attribute).'.value';
            }
        }

        if (in_array($attrInstance->getFrontendClass(), $this->_castToIntMap)) {
            $orderExpr = Mage::getResourceHelper('eav')->getCastToIntExpression(
                $this->_prepareOrderExpression($orderExpr)
            );
        }

        $orderExpr .= ' ' . $dir;
        $this->getSelect()->order($orderExpr);
    }
    return $this;
}

1

একটি কনফিগারযোগ্য পণ্যের বৈশিষ্ট্যে বিকল্পের ক্রম বাছাই করার জন্য আমার সমাধান এখানে। কালেকশন.এফপি অনুলিপি করে শুরু করুন,

app/code/core/Mage/Catalog/Model/Resource/Product/Type/Configurable/Attribute/Collection.phpto app/code/local/Mage/Catalog/Model/Resource/Product/Type/Configurable/Attribute/Collection.php

তারপরে আপনি এই কোডটি খুঁজে পেতে পারেন:

foreach ($this->getProduct()->getTypeInstance(true)->getUsedProducts(array($productAttribute->getAttributeCode()), $this->getProduct()) as $associatedProduct) {

এবং এই কোডটি দিয়ে এটি প্রতিস্থাপন করুন:

$assProds = $this->getProduct()->getTypeInstance(true)->getUsedProducts(array($productAttribute->getAttributeCode()), $this->getProduct());
sort($assProds);
foreach ($assProds as $associatedProduct) {

এটি আপনাকে বর্ণমালায় অ্যাট্রিবিউট বিকল্পগুলির ড্রপ-ডাউন তালিকাটিকে বাছাই করার অনুমতি দেবে। আপনি array_reverse()অনুরূপ ফাংশন ব্যবহার করে বা ক্রমটি বিপরীত করতে পারেন ।

পূর্বে, আমার বৈশিষ্ট্যগুলি বিকল্পগুলি বিপরীত বর্ণানুক্রমিক ক্রমে ছিল। এখন, তারা বর্ণানুক্রমিকভাবে আছে।

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