পণ্য সংগ্রহ থেকে কীভাবে প্রথম আইটেম পাবেন


23

বিভাগে ভিউ.এফটিএমটিএল আমি যদি বিভাগটি পেয়েছি এবং তারপরে একটি পণ্য সংগ্রহ পাই, তবে কোডটিতে ব্যবহারের জন্য product _ প্রোডাক্টের জন্য নির্ধারিত সংগ্রহটি আমি কীভাবে প্রথম পণ্য পেতে পারি? আমার যা আছে তা এখানে:

$_category   = $this->getCurrentCategory();
$_collection = $_category->getProductCollection();
$_product    = 
$_resource   = $_product->getResource();

আমি ফোরচ ব্যবহার করার চেষ্টা করেছি কিন্তু ত্রুটিগুলি পেয়েছি।


2
$_product = $_collection->getFirstItem()
পিজিরকিন্ড

1
@ পিজিরকিন্ড এই উত্তরটি রেখেছেন। দয়া করে মন্তব্য করবেন না
অমিত বেরা

1
অবৈধ পদ্ধতি Mage_Catalog_Block_Category_View :: canEmailToFriend (অ্যারে)) - আমি এই কিন্তু পেয়ে ত্রুটি চেষ্টা
ড্যানি

1
@ হাইজেনবার্গ এবং আপনি এমন কোনও ফাংশনকে কল করার চেষ্টা করছেন যা উত্সাহী নয়, যেভাবেই হোক, এটি একটি ভিন্ন ত্রুটি (আপনার মূল প্রশ্নের সাথে সংযুক্ত নয়), হয় আপনার কোডটি নতুন কোডের সাথে আপডেট করুন বা একটি নতুন শুরু করুন
পিরজিনকড

@ উদয় আপনি যদি এখানে কোনও উত্তর খুঁজে পান তবে দয়া করে এই প্রশ্নটিকে সমাধান হিসাবে চিহ্নিত করতে গ্রহণ করুন।
এসভি

উত্তর:


25

কোনও সংগ্রহে প্রথম আইটেমটি পেতে কেবল সংগ্রহে getFirstItem()ফাংশনটি ব্যবহার করুন ।

উদাহরণ:

// this gets all the products
$productCollection = Mage::getResourceModel('catalog/products_collection');
// this line gets just the first product
$firstItem = $productCollection->getFirstItem(); 

উদাহরণ 2 (এই নির্দিষ্ট প্রশ্নের জন্য):

$_category  = $this->getCurrentCategory();
$_collection = $_category->getProductCollection();
$_product =  $_collection->getFirstItem(); // this will get first item in collection

এটি ব্যবহার করা যেতে পারে কিছু অন্যান্য ক্ষেত্র:

গ্রাহকরা

$customerCollection = Mage::getResourceModel('customer/customer_collection');
$firstCustomer = $customerCollection->getFirstItem();

অর্ডার

$orderCollection = Mage::getResourceModel('sales/order_collection');
$firstOrder = $orderCollection->getFirstItem();

দয়া করে নোট করুন:

এটির জন্য সমস্ত পণ্য / গ্রাহক / অর্ডার লোড করা ভাল ধারণা নয় resources পছন্দের উপায়টি হ'ল আপনি যা লোড করতে চান তা addAttributeToFilter()বা addFieldToFilter()ফাংশনগুলি ব্যবহার করে সীমাবদ্ধ করা , নীচের উদাহরণটি দেখুন:

$productCollection = Mage::getResourceModel('catalog/product_collection')
                           ->addAttributeToFilter('sku', 'book123`);

5

প্লিজাইন্ড সম্পূর্ণরূপে সঠিক, কেবল ভাবছেন যে কেউই পারফরম্যান্স সম্পর্কে যত্ন নেন না। আপনি যদি কেবল কোনও সংগ্রহের প্রথম / শেষ আইটেমটি চান তবে আপনার জিজ্ঞাসাটি সর্বদা সীমাবদ্ধ করা উচিত 1:

$collection->getSelect()->limit(1);

কেবল ব্যবহারের getFirstItem()ফলে এখনও পুরো সংগ্রহ লোড হবে এবং এর পরে এটি প্রথম আইটেমটি আঁকড়ে ধরে।


উদাহরণ : 750 পণ্য সহ বিভাগ

$category = Mage::getModel('catalog/category')->load(41);
$collection = $category->getProductCollection();
# $collection->getSelect()->limit(1);
var_dump($collection->getSelect()->__toString());
var_dump($collection->getFirstItem()->getData());

ঠিক getFirstItem():

  • মোট Incl। ওয়াল টাইম (মাইক্রোসেকস): 2,318,497 মাইক্রোস্যাকস
  • মোট Incl। সিপিইউ (মাইক্রোস্যাকস): 2,000,604 মাইক্রোস্যাকস
  • মোট Incl। মেমুউস (বাইটস): 7,729,776 বাইট
  • মোট Incl। পিকমেমস (বাইটস): 7,977,672 বাইট tes
  • ফাংশন কলগুলির সংখ্যা: 96,957

যোগ করা হচ্ছে getSelect()->limit(1):

  • মোট Incl। ওয়াল সময় (মাইক্রোসেকস): 424,955 মাইক্রোসেকস
  • মোট Incl। সিপিইউ (মাইক্রোস্যাকস): 380,326 মাইক্রোস্যাকস
  • মোট Incl। মেমুউজ (বাইটস): 4,043,728 বাইট
  • মোট Incl। পিকমেমউস (বাইটস): 3,976,000 বাইট
  • ফাংশন কলগুলির সংখ্যা: 15,249

2
এটি আদর্শ যেমন এটি দুটি সমাধানকে কভার করে, এবং কার্যকর করার সময় সরবরাহ করে এবং পারফরম্যান্স বেনিফিটগুলি ব্যাখ্যা করে +1
বেনএন 1 টি

3
var_dump($_collection->getFirstItem()->getData());
echo $_collection->getFirstItem()->getName();

শেষ আইটেমটি কীভাবে পাবেন:

echo $_collection->getLastItem()->getName();
var_dump($_collection->getLastItem()->getData()); 

2

@pZirKind ঠিক আছে আপনি ভেরেন সংগ্রহ শ্রেণীর স্থানীয় পদ্ধতি ব্যবহার করে পণ্য সংগ্রহ থেকে প্রথম আইটেমটি পেতে পারেন:

$_category  = $this->getCurrentCategory();

$_collection = $_category->getProductCollection();

$_product = $_collection->getFirstItem()


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