পণ্য তালিকা বৈশিষ্ট্য ফিল্টার ক্যোয়ারী


12

আমি _getProductCollection() ক্লাসের মেথডে একটি ফিল্টার Mage_Catalog_Block_Product_List নিম্নরূপে যুক্ত করেছি।

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'"); 
    ...
}

উপরের কোডটি ম্যাজেন্টো সংস্করণ 1.7 হিসাবে সূক্ষ্মভাবে কাজ করছে। তবে যখনই আমি নিম্নলিখিত কোডটি লিখি, এটি দেয়

কলাম পাওয়া যায় নি: 1054 অজানা কলাম 'e.type_id' 'যেখানে ধারা'

ত্রুটি.

কোড (যা কাজ করছে না)।

protected function _getProductCollection()
{
     ...
    $this->_productCollection = $layer->getProductCollection();
    $this->_productCollection
        ->addAttributeToSelect('type_id')
        ->addAttributeToFilter('type_id','simple');
    ...
}

এখন প্রশ্ন

  1. আমি যদি প্রথম ওয়ার্কিং কোড ব্যবহার করি তবে কি কোনও কার্যকারিতা প্রভাব ফেলবে?
  2. একটি সঠিক পণ্য ফিল্টার পেতে অন্য কোন উপায় আছে?

হালনাগাদ:

আমি যখনই নিম্নলিখিত কোডটি প্রয়োগ করি এবং rwdথিমটি ব্যবহার করি তখন আমি কোনও ত্রুটি পাচ্ছি না। তবে যখনই আমি defaultথিমটি ব্যবহার করি তখন নীচের ত্রুটিটি পাই,

কোড

protected function _getProductCollection()
{
     ...
    $this->_productCollection = $layer->getProductCollection();
    $this->_productCollection
         ->addAttributeToSelect('type_id')
         ->addAttributeToFilter('type_id','simple');
    ...
}

ত্রুটি

এসকিউএসএলসেট [42 এস 22]: কলামটি পাওয়া যায় নি: 1054 অজানা কলাম 'e.type_id' তে যেখানে 'ক্লজ' রয়েছে, ক্যোয়ারীটি ছিল: নির্বাচন করুন ফ্লোর ((রাউন্ড ((e.min_price) * 1, 2)) / 10) + 1 এএস range, COUNT টি (*) আঃ countথেকে catalog_product_index_priceআঃ e ভেতরের যোগ দিতে catalog_category_product_indexআঃ cat_indexঅন cat_index.product_id = e.entity_id এবং cat_index.store_id = 1 এবং cat_index.visibility (2, 4) ও cat_index.category_id = '3' কোথায় ( etype_idইন ( 'সহজ' )) এবং (e.website_id = '1') এবং (e.customer_group_id = 0) এবং (e.min_price নকল নয়) ফুলের দ্বারা গ্রুপ ((রাউন্ড ((e.min_price) * 1, 2)) / 10) ফ্লোরের মাধ্যমে +1 অর্ডার ((রাউন্ড ((ই। এমিন_প্রাইস) * 1, 2)) / 10) + 1 এএসসি


আপনি কোন ম্যাজেন্টো সংস্করণ ব্যবহার করেছেন ?? * & Magento প্যাচ প্রয়োগ করেছে
অমিত বেড়া

1
Wtf? এখন জ্ঞান আছে ... আমি আরডাব্লুডিতে একটি EE 1.14 চেষ্টা করছিলাম, এটি কেবল অগ্রহণযোগ্য, একটি ভিউ থিম কীভাবে পুরো টেবিলটিকে সবচেয়ে খারাপভাবে কীভাবে মূল টেবিলটি পরিবর্তন করতে পারে তা পরিবর্তন করতে পারে ... এটি কোনও বাগ ছাড়া আর কিছুই হতে পারে না couldn't । ভাল করেছেন @ ম্যাজেন্টো লার্নার!
মাউরোনিগ্রিল

ঠিক ঠিক, ভিউ থিমটি সমস্যা তৈরি করে। ধন্যবাদ। কোডটি কোনও থিমের থেকে
আলাদা

উত্তর:


0

আমি মনেকরি যে:

$collection->addAttributeToFilter('type_id', array('eq' => 'simple');

কাজ করা উচিত, যেহেতু type_idআপনাকে selectএকটি catalog_product_entityকলামটি যুক্ত করা দরকার না এবং এটি ডিফল্টরূপে পুনরুদ্ধার করা হয়। কী ঘটেছিল তার সেরা ধারণা পেতে আমি সর্বদা চূড়ান্ত ক্যোয়ারি লগ করার পরামর্শ দিই:

Mage.:log($collection->getSelectSql(true));

বিটিডাব্লু: আপনি নিজেরাই মূল টেবিলে ( catalog_product_entity) যোগদান করছেন বলে প্রথম কোড ব্লকের কোনও ধারণা নেই ।


"ম্যাজেন্টো ১.7 এ তারা মূল্য পরিশোধক বিকল্পগুলির জন্য নির্বাচিত স্কয়ারগুলিতে একটি অপ্টিমাইজেশন করেছেন They তারা FRM বর্গ অংশটি (যা পণ্য সত্তা - যা টাইপ_আইডি বৈশিষ্ট্য ধারণ করে) সরিয়ে দেয় এবং দাম_এন্ডেক্স সম্পর্কিত টেবিলকে মূল এক করে তোলে - এক এটি ক্যোয়ারির FROM অংশে ব্যবহৃত হয় So সুতরাং মূলত যে টেবিল থেকে ডেটা নির্বাচন করা হয় সেটি আর পণ্য সত্তার টেবিল নয় (আপনি সমস্ত পণ্য ভিত্তিক বৈশিষ্ট্য হারাবেন) মূল টেবিলটি পণ্য সূচক হয় This এটি একটি মূল আপডেট that ম্যাজেন্টো দলটি 1.7 সংস্করণ শুরু করে যুক্ত করেছে "" নিম্নলিখিতটি উল্লেখ করুন
ম্যাজেন্টো লার্নার


1
বাহু আমার দোষ লোক, কোনও কারণে, আমি ব্যাকএন্ড ব্লক গেটক্লেকশন পদ্ধতিতে ভাবছিলাম, সুতরাং এই পরিস্থিতিতে আপনার প্রথম কোডটি ঠিক আছে আমি নিশ্চিত নই যে এটি সেরা সমাধান তবে ঠিক আছে বলে মনে হচ্ছে। দুঃখিত
মাউরোনিগ্রিল

আপনি কি পোস্টটি সম্পর্কে নিশ্চিত? আমি সবেমাত্র একটি EE1.14 ইনস্টল করেছি এবং এখনও ক্যাটালগ_প্রডাক্ট_এন্টিটি প্রধান টেবিল হিসাবে ব্যবহার করেছি এবং আপনি ফ্ল্যাট ক্যাটালগ ব্যবহার করার জন্য সেট না করে (একেবারে প্রস্তাবিত) তবে উভয় ক্ষেত্রেই আপনি নির্বাচিত ক্ষেত্রে টাইপ_আইডি রেখেছেন। আমি মূল উত্তরে যেমন লিখেছি তেমনি আপনি কি ক্যোয়ারীটি লগ ইন করতে পারেন?
মাউরোনিগ্রিল

1
মিমি মজার আকর্ষণীয় ... আমি অনুসন্ধানের ক্ষেত্রেও ক্যোয়ারীটি যাচাই করি এবং ক্যাটালগ_প্রডাক্ট_এন্টিটি প্রধান টেবিল হিসাবে ব্যবহার করি, সম্ভবত "ম্যাজেন্টো টিম" পরিবর্তনটি রোলব্যাক করার সিদ্ধান্ত নিয়েছে। এটি যাচাই করার জন্য আমি কোনও 1.7 ইনস্টলড পাইনি তবে সত্তার প্রধান টেবিলটি পরিবর্তনের ধারণাটি খুব খারাপ স্থাপত্য সিদ্ধান্তের মতো মনে হচ্ছে ... ভাল নোট করুন যে আপনি কেবল আমার উইকএন্ড নষ্ট করে দিয়েছেন, এখন আমাকে সিই 1 খুঁজে পেতে এবং ইনস্টল করতে হবে .7 এবং আমার নিজের চোখের সাথে এই বাজে
জিনিসটি দেখুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.