ম্যাজেন্টো 2 এ কীভাবে সংগ্রহ MySQL কোয়েরি মুদ্রণ করবেন?


15

নেই getSelect()->__toString();সংগ্রহ প্রিন্ট জিজ্ঞাসার জন্য Magento 1 পাওয়া যায়। উদাহরণস্বরূপ নীচের

$products = Mage::getModel(‘catalog/product’)
 ->addAttributeToFilter(‘status’, array(‘eq => 1));
echo $products->getSelect()->__toString();

ম্যাজেন্টো 2 তে কোনও পদ্ধতি উপলব্ধ? আমি এটি পেয়েছি ->printLogQuery(true);কিন্তু আমার জন্য কাজ করে না।

আপডেট: নীচে কোড। আমি সেরা বিক্রেতার পণ্য পেতে চেষ্টা করছি। এটির কাজটি নিখুঁত তবে আমি ডিবাগের জন্য ক্যোয়ারী মুদ্রণ করতে চাই।

$this->_collection->getSelect()
                  ->joinLeft(
                'sales_order_item',
                'e.entity_id = sales_order_item.product_id',
                array('qty_ordered'=>'SUM(sales_order_item.qty_ordered)')) 
                ->group('e.entity_id') 
                ->order('qty_ordered '.$this->getCurrentDirectionReverse());

1
দয়া করে আপনি যে সম্পূর্ণ কোডটি printLogQueryদিয়ে যাচ্ছেন তা পোস্ট করুন
রাফেল ডিজিটাল পিয়ানোবাদ

দ্রুত মন্তব্য করার জন্য @ রাফেল্যাটডিজিটালপিয়ানিজমকে ধন্যবাদ। আমি কোড সহ প্রশ্ন সংশোধন আছে।
কুল

1
আপনি $ এটি -> _ সংগ্রহ-> getSelect () দিয়ে চেষ্টা করতে পারেন;
রকেশ জেসাদিয়া

উত্তর:


37

উপরের উত্তরগুলি সঠিক, তবে কিছু সংগ্রহগুলি কেবল _beforeLoad()পদ্ধতিতে নির্বাচককে একত্রিত করে , এটি নির্মাণকারীর সাথে আরম্ভ করার বিপরীতে। এর অর্থ আপনি সংগ্রহটি লোড করার আগে এসকিউএল কোয়েরি আউটপুট দেওয়ার চেষ্টা করলে আপনি একটি খালি স্ট্রিং পাবেন।

এর একটি উদাহরণ \Magento\Sales\Model\ResourceModel\Report\Bestsellers\Collection। সুতরাং আপনি যদি অপ্রত্যাশিত ফলাফল পেয়ে থাকেন তবে সংগ্রহটি লোড করুন (এটি চূড়ান্ত নির্বাচনী ক্যোয়ারী তৈরি করবে) এবং তারপরে কোয়েরি আউটপুট।

$collection->load();

// the following statements are equivalent
$collection->getSelect()->assemble();
$collection->getSelect()->__toString();
echo $collection->getSelect(); // will call magic method __toString() behind the scenes which in turn calls assemble()

11

ম্যাজেন্টো 2 তে ক্যোয়ারী প্রিন্ট করতে আপনি ম্যাজেন্টো 1 এর মতোই ব্যবহার করতে পারেন।

$collection = $this->_collection->getSelect()
                      ->joinLeft(
                    'sales_order_item',
                    'e.entity_id = sales_order_item.product_id',
                    array('qty_ordered'=>'SUM(sales_order_item.qty_ordered)')) 
                    ->group('e.entity_id') 
                    ->order('qty_ordered '.$this->getCurrentDirectionReverse());

$collection->getSelect()->__toString();

পারফেক্ট। আমি এম 2 এর জন্য একরকম নেই। তার কাজ নিখুঁত!
কুল

8

আপনি Magento 2 এ ক্যোয়ারী প্রিন্ট করতে __toString () ফাংশনটি ব্যবহার করতে পারেন

$collection = "Your Query";

echo $collection->getSelect()->__toString();


1

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


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