ম্যাজেন্টো 2 এপিআই: এক্সটেনশন অ্যাট্রিবিউট দ্বারা ফিল্টার অর্ডার


10

আমি একটি বৈশিষ্ট্য নির্ধারিত সঙ্গে একটি এক্সটেনশন আছে order itemsবলা warehouse
আমি এই বৈশিষ্ট্যটি সম্পত্তি " extension_attributes" এর অধীনে দেখতে পারি ।
এই বৈশিষ্ট্যের উপর ভিত্তি করে আমাকে অর্ডারগুলি ফিল্টার করতে হবে। এটি কীভাবে করা যায় সে সম্পর্কে কোনও নথিপত্র পাই না।

উদাহরণ এপিআই প্রতিক্রিয়া স্নিপেট:

[items] => Array(
    [0] => Array(
        [extension_attributes] => Array(
            [warehouse] => MyWarehouse
        )
    )
)

নিম্নলিখিত ফিল্টারটি একটি অভ্যন্তরীণ ত্রুটি উত্পন্ন করে:

searchCriteria[filter_groups][2][filters][0][field]=warehouse,searchCriteria[filter_groups][2][filters][0][value]=mywarehouse,searchCriteria[filter_groups][2][filters][0][condition_type]=eq

আমি কীভাবে গুদামের অ্যাট্রিবিউট ব্যবহার করে অর্ডার ফিল্টার করতে পারি তার কোনও পরামর্শ API?

- এই প্রশ্নের অতিরিক্ত পয়েন্ট:

এই ক্ষেত্রে, যদি আমরা অনুসরণ করব Fooman ব্লগ .Then আমরা দ্বারা সংগ্রহ ফিল্টার করতে পারেন এক্সটেনশন * বৈশিষ্ট্য?

  • এই এক্সটেনশন দ্বারা সংগ্রহ ফিল্টারটি অ্যাট্রিবিউটটি দ্রুত চালানো উচিত?
  • আমরা যদি এই এক্সটেনশন অ্যাট্রিবিউট টেবিলটি সংরক্ষণের জন্য কাস্টম ডিবি টেবিল ব্যবহার করি তবে কীভাবে ফিল্টার করতে পারি? এটি কি ম্যাজেন্টো সম্মুখভাগ এবং ব্যাকএন্ডে কাজ করা উচিত।
  • প্রয়োজনে কোন সংশোধন করতে হবে এবং কোন শ্রেণিতে কোন রেফারেন্স ব্লগ যুক্ত করতে হবে?

ভাল জন্য অপেক্ষা করুন এবং এই পয়েন্টগুলিতে / সংক্ষিপ্ত উত্তর বর্ণনা?


কেউ উত্তর দিল না?
বুনিয়ামিন ইনান

1
আপনি কি আপনার বৈশিষ্ট্যটি ঘোষণা করেছেন Module>/etc/extension_attributes.xml?
থিয়াগো লিমা

হ্যাঁ, মানুষ, আমি এটি করিনি।
অমিত বেড়া

2
আপনি করেছেন নাকি করেননি? এই বিষয়টি হতে পারে।
থিয়াগো লিমা

উত্তর:


4

আপনি এটি চেষ্টা করতে পারেন

/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=warehouse&searchCriteria[filter_groups][0][filters][0][value]=MyWarehouse&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

এটি আমার উত্তর দেওয়া হয়নি :(
অমিত বেরা

দয়া করে সংক্ষেপে ব্যাখ্যা
অমিত বেড়া

@ অমিতবেরা আপনাকে ডিবি এর সংশ্লিষ্ট সারণীতে বৈশিষ্ট্যটি সংরক্ষণ করতে হবে এবং তদনুসারে এপিআইতে কল করতে হবে, আমার উত্তরটি পরীক্ষা করুন।
বিবেক কুমার

@ অমিতবেরা আপনি আমাকে এক্সটেনশন বৈশিষ্ট্য সম্পর্কে বা এপিআই
অ্যাগনেস

আমি এপিআই-তে অনুসন্ধানের মানদণ্ড সম্পর্কে জিজ্ঞাসা করছি
অমিত বেরা

1

সন্ধানক্রিটরিয়া পরিবর্তে ডিবি / সংগ্রহের পরিবর্তে এপিআই প্রতিক্রিয়া থেকে ফলাফলগুলি ফিল্টার করে না, যদি এক্সটেনশন_ট্রিবিউটে কাস্টম বৈশিষ্ট্যগুলি সারণীতে একটি কলাম হিসাবে ডিবিতে উপলব্ধ না হয় যেখানে তথ্য আনা হচ্ছে তখন তা প্রতিক্রিয়াতে আসবে না।

যেমন যেমন আমি নিম্নলিখিত এপিআই কল করি -

 http://example.com/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=random&searchCriteria[filter_groups][0][filters][0][value]=random&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

তারপরে বিক্রয়_র্ডার টেবিলটিতে এলোমেলো নামে কোনও কলাম নেই (যা থেকে এপিআই সাড়া আনছে), আমি নিম্নলিখিত ত্রুটি পেয়েছি;

SQLSTATE [42S22]: কলাম পাওয়া যায়নি: 1054 অজানা কলামে 'র্যান্ডম' 'যেখানে দফা', ক্যোয়ারী ছিল: নির্বাচন main_table। * থেকে sales_orderআঃ main_tableযেখানে (( random= 'র্যান্ডম'))

সুতরাং, যদি আপনাকে নতুন কলামে স্বতন্ত্র টেবিলের মধ্যে সংরক্ষণ করতে হয় এমন এপিআইতে আপনার কাস্টম ডেটা কল করতে হয়, তবে আপনি সাধারণত এটি কলের নামটিকে ফিটার ক্ষেত্র হিসাবে এবং নিজের পছন্দসই মান হিসাবে নীচের মতো ব্যবহার করে কল করতে পারেন;

 http://example.com/rest/V1/orders?searchCriteria[filter_groups][0][filters][0][field]=column_name&searchCriteria[filter_groups][0][filters][0][value]=desired_value&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

আমি নিজেই এটি পরীক্ষা করেছি, আমি আশা করি আপনার জন্যও একই কাজ করে।


1

এটি লেখার মুহুর্তে (ম্যাজেন্টো ২.২), আমি মনে করি না এক্সটেনশন বৈশিষ্ট্যগুলিতে ফিল্টার করার কোনও উপায় আছে। যদিও আপনি অন্তর্নিহিত সংগ্রহের মধ্যে উপস্থিত আছেন যদিও selectআপনি কোনও <join>ইন সংজ্ঞায়িত করেন extension_attributes.xmlতবে মনে হয় আপনি এটিতে ফিল্টার করতে পারবেন না।

এটি কোনও এক্সটেনশান বৈশিষ্ট্যের মানগুলিতে ফিল্টার করার উপায় সরবরাহ করার জন্য এক্সটেনশন বিকাশকারী to আপনি অ্যামাজন পেমেন্ট মডিউলে একটি উদাহরণ দেখতে পাচ্ছেন: https://github.com/amzn/amazon-payments-magento-2-plugin/blob/master/src/Login/Pugug//CustomerCol લેક્..pp#L51

সেই প্লাগইনে, আপনি দেখতে পাচ্ছেন যে তারা কীভাবে ইতিমধ্যে টেবিলটি যোগদানের প্রত্যাশা করে (যেমন এটি সংজ্ঞায়িত করা হয়েছে extension_attributes.xml), তবে ম্যানুয়ালি ফিল্টারটি প্রয়োগ করুন।


0

@ অমিতবেরা আমি এর জন্য 100% নিশ্চিত নই এবং এটি আপনার সমস্ত প্রশ্নের উত্তর দেয় না তবে আমি মনে করি প্রথমে আপনাকে প্রথমে জয়েন্টপ্রসেসর ব্যবহারের মানদণ্ড অনুসন্ধান করতে হবে এবং তারপরে ফাইলার ব্যবহার করতে হবে। এটি কীভাবে এটি করতে হয় তা আরও পরীক্ষা করতে পারেন http://devdocs.magento.com/guides/v2.2/existance-dev-guide/searching-with-repositories.html

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