একাধিক ক্ষেত্র কাজ না করার জন্য addAttributeToSelect


10

আমি ব্যবহারকারীর অর্ডার ইতিহাস পাওয়ার চেষ্টা করছি, নীচের ক্যোয়ারী এবং এটির কার্যকারিতাটি ব্যবহার করেছি। তবে এটি সমস্ত আদেশ সম্পর্কিত ক্ষেত্রটি টেবিল থেকে ফিরে আসছে

    $collection     = Mage::getModel("sales/order")->getCollection()
                               ->addAttributeToSelect('*')
                               ->addFieldToFilter('customer_id', 400)
                               ->setOrder('created_at', 'desc');

আমি কেবলমাত্র নির্দিষ্ট ক্ষেত্রগুলি আনতে চাই, তাই -> অ্যাডঅ্যাট্রিবিউটটোসিলেক্ট ('*') এর ক্ষেত্রে

     used the following code 

 ->addAttributeToSelect(array('created_at','customer_id','increment_id','updated_at','status','entity_id','state'))

তবে "ক্ষেত্রের নামটি নির্ধারণ করতে পারে না" হিসাবে ত্রুটি পাওয়া getting

উত্তর:


20

addFieldToSelect AddAttributeToSelect এর ক্ষেত্রে ব্যবহার করুন

অ্যাডফিল্ডটোসলেট ফ্ল্যাট মডেলের জন্য ব্যবহৃত হয়

EAV মডেলের জন্য ব্যবহারকারীকে অ্যাড্রিবিউটটোসলেক্ট করুন


3

যে কারণে আপনি ত্রুটিটি পেয়ে যাচ্ছেন তা হ'ল পদ্ধতিটি Mage_Sales_Model_Resource_Collection_Abstract::addAttributeToSelectকেবল স্বতন্ত্র বৈশিষ্ট্যের জন্য কাজ করে বিশেষত বৈশিষ্ট্যের অ্যারে নয়।

এটি কেবল পৃথক বৈশিষ্ট্যের জন্য কাজ করে কারণ বৈশিষ্ট্যটি আসল কিনা তা নিশ্চিত করার জন্য এটি কলকে বৈধতা দেবে।

public function addAttributeToSelect($attribute)
{
    $this->addFieldToSelect($this->_attributeToField($attribute));
    return $this;
}

আপনি যখন সন্ধান করবেন তখন Mage_Sales_Model_Resource_Collection_Abstract::_attributeToFieldদেখুন যে এটি নীচের মত কাজ করে।

  1. আপনি যদি একটি স্ট্রিং পাস করেন তবে এটি স্ট্রিংটি কেবল ফিরে আসবে,
  2. আপনি যদি কোনও বস্তু পাস করেন তবে এটি যাচাই করবে যে এটি কোনও প্রকারের বস্তু Mage_Eav_Model_Entity_Attributeএবং বৈশিষ্ট্য কোডটি ফেরত দেবে,

কোডটি নিম্নরূপ দেখায়:

protected function _attributeToField($attribute)
{
    $field = false;
    if (is_string($attribute)) {
        $field = $attribute;
    } elseif ($attribute instanceof Mage_Eav_Model_Entity_Attribute) {
        $field = $attribute->getAttributeCode();
    }
    if (!$field) {
        Mage::throwException(Mage::helper('sales')->__('Cannot determine the field name.'));
    }
    return $field;
}

সুতরাং আমি যেমন দেখছি ততগুলি বিকল্পগুলি নীচে রয়েছে:

  1. কেবল addFieldToSelectঅ্যাট্রিবিউট কোডের একটি অ্যারের সাথে কল করুন । যেহেতু আপনি কেবল কোডগুলি পাস করছেন এবং অবজেক্টগুলি নয় আপনি বৈধতা পাবেন না তবে আপনার ক্ষেত্রে আপনার এটির দরকার নেই।
  2. addAttributeToSelectপ্রতিটি বৈশিষ্ট্যের জন্য একবার কল করুন ।

আমি আপনার কেস বিকল্পে পরামর্শ দেব একটি সেরা হবে।


2

এএফআইকে চারপাশের কাজগুলি কেবলমাত্র সমস্ত এককভাবে করা (যে কারণেই আপনি ব্যবহার করার জন্য দৃ are় প্রতিজ্ঞ addAttributeToSelect:

->addAttributeToSelect('created_at') 
->addAttributeToSelect('customer_id') 
->addAttributeToSelect('increment_id') 
->addAttributeToSelect('updated_at') 
->addAttributeToSelect('status') 
->addAttributeToSelect('entity_id')
->addAttributeToSelect('state')

1

পোস্টের শিরোনাম সংগ্রহ নির্দিষ্ট না হওয়ায় ... ম্যাজ_গ্যাটালগ_মোডেল_ রিসোর্স_প্রোডাক্ট_কলেকশনের একটি অতিরিক্ত প্যারামিটার জোড় টাইপ রয়েছে যা এটি এর মতো ব্যবহার করতে হবে:

$attributesToSelect = array('name','description');
$collection->addAttributeToSelect($attributesToSelect, 'left');
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.