ম্যাজেন্টোর সিআরইউডি মডেলের তিনটি বুনিয়াদি শ্রেণির ধরণ রয়েছে।
একটি "মডেল" হ'ল যা আপনি সাধারণত ব্যবহার করেন। এটি একটি ডাটাবেস অগ্নিস্টিক উপায়ে (পণ্য, বিভাগ, সিএমএস পৃষ্ঠা, পর্যালোচনা, ইত্যাদি) কোনও নির্দিষ্ট ধরণের ডেটার প্রতিনিধিত্ব করে
একটি "রিসোর্স মডেল" হ'ল এমন একটি শ্রেণি যা পর্দার আড়ালে ম্যাজেন্টো থেকে ডেটা প্রকৃতভাবে নিয়ে আসে। প্রতিটি মডেলের একটি সংস্থান মডেল থাকে যা ডাটাবেস থেকে কোনও মডেলের একক উদাহরণ লোড করতে ব্যবহৃত হয় ।
একটি "সংগ্রহ" একটি শ্রেণি যা নিয়মের একটি সেটের ভিত্তিতে একাধিক মডেলের কাঠামোর মতো অ্যারে লোড করে। এটিকে এসকিউএল এর মতো ভাবেন WHERE clause
।
কিছুটা বিভ্রান্তিকর বিষয়গুলি হ'ল, পর্দার আড়ালে, ম্যাজেন্টো একটি সংগ্রহকে একটি সংস্থান হিসাবে বিবেচনা করে। সুতরাং সংগ্রহ সংস্থান মডেল এবং স্বতন্ত্র সংস্থান মডেল আছে ।
সাধারণভাবে বলতে গেলে, আপনি যখন কোনও নির্দিষ্ট আইটেমটি লোড করতে চান, আপনি একটি মডেল ব্যবহার করেন । আপনি যখন বেশ কয়েকটি আইটেম লোড করতে চান তখন আপনি সংগ্রহ সংস্থান মডেল ব্যবহার করেন ।
//loads one
$product = Mage::getModel('catalog/product')->load($id);
//loads many products where price is greater than 100
$products = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('*') //load all fields, see EAV below
->addAttributeToFilter('price', array('gt'=>'100'));
foreach($products as $product)
{
var_dump($product->getSku());
}
সংগ্রহ সংস্থান মডেলটির মাধ্যমে লোড করার বিষয়ে একটি বিষয় মনে রাখবেন প্রতিটি স্বতন্ত্র মডেলের afterLoad
পদ্ধতিটি স্বয়ংক্রিয়ভাবে কল করা হবে না, যার অর্থ কিছু ডেটা লোড নাও হতে পারে।
Individua রিসোর্স মডেল শ্রেণীর সাধারণত সরাসরি অ্যাক্সেস নেই। তবে, মাঝে মাঝে একটি নির্দিষ্ট মডেল একটি থাকবে রিসোর্স এটি একটি দরকারী পদ্ধতি সঙ্গে মডেল। এগুলি আপনি সিস্টেম ব্যবহার করে সময়ের সাথে সাথে আবিষ্কার করতে পারবেন।
অবশেষে, আরও একটি পার্থক্য করা উচিত। ম্যাজেন্টোর নিয়মিত সিআরইউডি মডেলগুলির এমন কোনও সংখ্যক আইডি নয় যা লোড করার জন্য একটি বিশেষ সিনট্যাক্স রয়েছে। উদাহরণস্বরূপ, শিরোনাম অনুসারে একটি সিএমএস পৃষ্ঠা মডেল কীভাবে লোড করবেন তা এখানে
$page = Mage::getModel('cms/page')->load('Home page','title');
var_dump($page->getData());
তবে কয়েকটি ম্যাজেন্টো মডেল হ'ল ইএভি মডেল। এটি "সত্তা বৈশিষ্ট্য মান" এর জন্য দাঁড়িয়েছে এবং এই মডেলগুলির ক্ষেত্রগুলির একটি নির্দিষ্ট সেট নেই বলার অভিনব উপায়। এর মধ্যে রয়েছে পণ্য মডেল এবং বিভাগের মডেল। এই বৈশিষ্ট্যটি হ'ল যা আপনাকে বিভিন্ন ধরণের পণ্যের জন্য আলাদা আলাদা বৈশিষ্ট্য বাছাই করতে দেয়। EAV মডেলের প্রতিটি ক্ষেত্র একটি গুণ হিসাবে পরিচিত। উপরের সিনট্যাক্সগুলি এই মডেলগুলির সাথে কাজ করবে না, পরিবর্তে আপনাকে loadByAttribute
পদ্ধতিটি ব্যবহার করতে হবে ।
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'n2610');
আপনার নির্দিষ্ট সমস্যা সম্পর্কিত, যদি আপনি নির্দিষ্ট পদ্ধতির "পদ্ধতি অপরিজ্ঞাত" কোনও ত্রুটি পেয়ে থাকেন তবে আপনার সিস্টেমে কিছু খুব ভুল। এমনকি যদি getSku
পদ্ধতি বিদ্যমান নয়, Magento যাদু সেটার এবং সংগ্রহকারী পদ্ধতি যা নিশ্চিত হয়েছে get
কোনো কল মডেল সবসময় কিছু ফিরে আসবে, এমনকি যদি এটা নাল।
এর চেয়ে বেশি সম্ভবত আপনি নীচের মতো একটি ত্রুটি পেয়ে যাচ্ছেন
Call to a member function getSku() on a non-object
এই ত্রুটিটি ঘটছে কারণ এটি যদি বস্তুটি লোড করতে না পারে তবে loadByAttribute
পদ্ধতিটি ফিরে আসে false
।
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'this-is-not-a-sku');
var_dump($product); //prints false
আপনার কোডে এই জাতীয় কিছু চেষ্টা করুন।
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'sku-value');
if($product)
{
var_dump($product->getName());
var_dump($product->getSku());
var_dump($product->getData());
}
else
{
var_dump("Could not load product");
}
শর্তাধীন অতিরিক্ত ছাড়াও, getData()
পদ্ধতিটি লক্ষ্য করুন । এটি অ্যারের হিসাবে সমস্ত অবজেক্টের ডেটার একটি অ্যারে প্রদান করবে।
আশা করি আপনার চলমান করার জন্য এটি যথেষ্ট। শুভকামনা!
$product
আপনার উদাহরণে একটি উদাহরণMage_Catalog_Model_Product
, যা ম্যাজেন্টো পার্লেন্সে একটি "মডেল"।