কতবার পণ্য অর্ডার করা হয়েছিল তা সন্ধান করুন


9

আমি গত দুই সপ্তাহ ধরে কতবার পণ্য অর্ডার দিয়েছি তা জানার চেষ্টা করছি। এখনও পর্যন্ত আমি পণ্য পেতে একটি লুপ আছে।

    foreach($productCollection as $product){

    }

আমি ধরে নিয়েছি লুপের ভিতরে থাকা এই অর্ডার বিশদটি আমার কাছে পাওয়ার যোগ্য হবে

    $order_items = Mage::getResourceModel('sales/order_item_collection')

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

দয়া করে এই প্রশ্নের জন্য সিনট্যাক্সটি দেখতে কেমন হবে?


কোনও সাধারণ ক্যোয়ারী করার জন্য আপনার কাছে কি মাইএসকিউএল অ্যাক্সেস রয়েছে বা আপনি ম্যাজেন্টোতে কিছু কার্যকারিতা তৈরি করতে চান?
ব্রেন্টপিউটারসন

দুর্ভাগ্যক্রমে আমি কোনও মাইএসকিউএল কোয়েরি করতে পারি না। মূলত এটি কার্যকারিতার জন্য এবং এটি কেবল পিএইচপি ব্যবহার করে কাজ করলে সবচেয়ে ভাল হবে
বিকাশকারী

উত্তর:


21

আসুন এসকিউএল নিয়ে চিন্তা শুরু করুন, ম্যাজেন্টো নয় (আমরা পরে সেখানে যাব)। আমি এটিকে লিখব (সরলতার জন্য সময় অঞ্চলকে উপেক্ষা করে):

SELECT sku,SUM(qty_ordered) FROM sales_flat_order_item
WHERE created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()
GROUP BY sku

এই ক্যোয়ারীটি কাজ করে (আমি পরীক্ষা করেছি)। সুতরাং, আমরা কীভাবে এই প্রশ্নটি ম্যাজেন্টোতে লিখতে যাব?

  • প্রথমত, আমরা দেখতে পাচ্ছি যে এটি পুরোপুরি উপর ভিত্তি করে sales_flat_order_item- ম্যাজেন্টোর এই সারণির জন্য একটি বিশেষ সংস্থান সংগ্রহ রয়েছে; আমরা এটি ব্যবহার করতে পারি।
  • আমরা দেখতে পাচ্ছি যে এটি SUMকলামগুলির একটিতে একটি ব্যবহার করে
  • WHEREএকটি BETWEENধারা রয়েছে - আমরা সম্ভবত Zend_Db_Exprআমাদের কাস্টম রোলিং 2-সপ্তাহের সময়সীমার আউটপুট ব্যবহার করতে পারি ।
  • অবশেষে, এটি একটি GROUP

আসুন আমরা এটি একসাথে রাখতে পারছি না কিনা তা দেখুন, তারপরে দ্রুত কল দিয়ে resetআমরা নিশ্চিত করেছি যে আমরা কেবল যে কলামগুলি সংজ্ঞায়িত করেছি তা পেয়েছি এবং অন্য কিছুই:

$query = Mage::getResourceModel('sales/order_item_collection');
$query->getSelect()->reset(Zend_Db_Select::COLUMNS)
        ->columns(array('sku','SUM(row_total)'))
        ->where(new Zend_Db_Expr('created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()'))
        ->group(array('sku'));

একটি সাধারণ প্রতিধ্বনি $query->getSelect()আমাদের দেখায় যে ক্যোয়ারীটি বেশ ভালভাবে ফর্ম্যাট হয়েছে:

SELECT `main_table`.`sku`, SUM(qty_ordered) FROM `sales_flat_order_item` AS `main_table` WHERE (created_at BETWEEN NOW()-INTERVAL 2 WEEK AND NOW()) GROUP BY `sku`

অন্যান্য বিবেচ্য বিষয়:

ভবিষ্যতে আপনি অর্ডার স্থিতির ভিত্তিতে এই প্রতিবেদনটি ফিল্টার করতে চাইতে পারেন (অন্য টেবিলে যোগ দেওয়া) অথবা আপনি সময় অঞ্চল সঠিক কিনা তা নিশ্চিত করতে চাইতে পারেন (এখনই এটি GMT এর উপর ভিত্তি করে প্রতিবেদন করছে)।

যোগদান সহজ:

->join(array('e' => 'sales_flat_order'),'main_table.order_id = e.entity_id')

তবে সময় অঞ্চল যুক্ত করা জটিল হতে পারে। দেখব Mage_Core_Model_Dateকিছু পদ্ধতি এবং জিএমটি থেকে টাইমস্ট্যাম্প রূপান্তর জন্য। বিক্রয় প্রতিবেদনের সংগ্রহটিও দেখুন।

আশা করি এইটি কাজ করবে! শুভকামনা করছি.


1
তুমি ঠিক বলছো. এইভাবে কোনও ম্যাজেন্টো ক্লাস লোড করা সম্পূর্ণ ওভারকিল হবে
স্যান্ডার ম্যানগেল

আমার আপডেট দেখুন - কি $queryছিল তা অন্তর্ভুক্ত করতে ভুলে গেছেন !
ফিলিঙ্কল

ক্রয়ের পরিমাণের জন্য ডলারের পরিমাণের বিকল্পের জন্য আরেকটি আপডেট ।
ফিলিঙ্কল

অনেক ধন্যবাদ @ ফিলিভিঙ্কল .. আমি আমার প্রয়োজন অনুসারে আপনাকে সমাধানটি অনুকূলিতকরণ করেছি। আবার আপনাকে ধন্যবাদ.
পবন কুমার

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