ম্যাজেন্টো 2: মডেল এবং ডেটা মডেলগুলির মধ্যে পার্থক্য


13

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

তবে, মনে হয় ম্যাজেন্টো পুরানো মডেলগুলিও ধরে রেখেছে।

মডিউল-গ্রাহকের একটি উদাহরণ নেওয়া যাক।

  • এপিআই / ডেটা / গ্রাহকআইন্টারফেস.এফপি সংজ্ঞায়িত ডেটা মডেল ইন্টারফেস
  • উপরোক্ত ইন্টারফেসটি মডেল / ডেটা / গ্রাহক
  • ডেটা মডেলটিতে গ্রাহক ভেরিয়েবলগুলির জন্য সমস্ত গেটর এবং সেটার ফাংশন রয়েছে, যেমনটি কেউ আশা করে
  • উপরের পাশাপাশি একটি মডেল / গ্রাহক। পিএফপিও রয়েছে। এটিতেও গিটার এবং সেটার ফাংশন রয়েছে। এটি এমন একটি ম্যাজেন্টো 1 মডেলের মতো যা রিসোর্সমোডেলের সাথে সংযুক্ত হয় (মডেল / রিসোর্সমোডেল / গ্রাহক
  • মডেল / রিসোর্সমোডেল / গ্রাহকরোপোসিটারি.এফপি-তে বিভিন্ন ফাংশন ম্যাগনেন্টো 1 মডেল থেকে ডেটা সংগ্রহ করে, তাদের ডেটা মডেলে স্থানান্তর করে এবং তারপরে ডেটা মডেলটি ফিরিয়ে দেয়।

কেন একজনের পুরানো মডেলটির প্রয়োজন? কেন ডেটা মডেল সরাসরি রিসোর্সমোডেলের সাথে সংযোগ স্থাপন করতে পারে না?

উত্তর:


7

আমার ব্যাখ্যা:

একটি মডেল এবং একটি ডেটা মডেলের মধ্যে পার্থক্য বোঝা খুব কঠিন। যদি আমাকে কয়েকটি কথায় বলতে হয় আমি বলতে পারি যে কোনও মডেল ইঞ্জিনকে উপস্থাপন করে এবং একটি ডেটা মডেল তার তথ্য উপস্থাপন করে ।

আপনার উদাহরণে, গ্রাহক সত্তার সাথে, আপনি উদাহরণস্বরূপ দেখতে পারেন যে পদ্ধতিটি কীভাবে authenticateবা validatePasswordগ্রাহক মডেলটিতে রাখা হয় যেহেতু তারা ইঞ্জিনের অংশ এবং তারা সরাসরি তথ্য পরিচালনা করে না। অন্যদিকে, পদ্ধতির মতো getExtensionAttributes, যেহেতু তথ্যের টুকরোগুলি পরিচালনা করা তথ্য মডেলটিতে রাখা হয়।

আমি মনে করি এটি কেবলমাত্র একটি ভাল প্রকল্প হ্যান্ডলিং, যেমন মডেল এবং সংস্থান মডেলগুলির মধ্যে বিভাজন, আপনি কেন তাদেরও প্রয়োজন তা জিজ্ঞাসা করতে পারেন।

আপনার এগুলি কেন দরকার:

আপনি গ্রাহকের তথ্য (উদাহরণস্বরূপ) তা প্রকাশ করার API ব্যবহার করে চান, আপনি একটি প্রয়োজন হবে ইন্টারফেস ( \Magento\Customer\Api\Data\CustomerInterfaceসঙ্গে) getters আপনার সত্তা সব বৈশিষ্ট্যাবলী সংজ্ঞায়িত, এবং আপনার যদি অন্য কোন আছে যদি সংগ্রহকারী পদ্ধতি একটি তথ্য আপনি এক্সপোজ করতে চান প্রতিনিধিত্বমূলক না (যেমন: getRandomConfirmationKey), তোমার সমস্যা আছে!

থি কেন, আমার উদাহরণে, getRandomConfirmationKeyমডেলটির অংশ ( \Magento\Customer\Model\Customer), যখন getFirstnameডেটা মডেলের অংশ।

একটি দ্রুত নিয়ম হতে পারে:

  • যদি আপনার পদ্ধতিটি কোনও সারণী কলাম, কোনও বৈশিষ্ট্য বা কোনও ধরণের কোনও সত্তার তথ্য উপস্থাপন করে তবে ডেটা মডেলটিতে যাওয়া উচিত ।
  • যদি আপনার পদ্ধতিটি তথ্যের উপর "ক্রিয়া" হয় তবে এটি তথ্য পরিচালনা করে বা আপনি এটি ওয়েবপিপি.এক্সএমএল এ ঘোষণা করেন , তবে এটি একটি মডেল পদ্ধতি হওয়া উচিত ।

পোস্ট:

কয়েকটি কথায়: প্রায় একটি ডিটিও হিসাবে একটি ডেটা মডেল বিবেচনা করুন।


এতে সমস্ত পদ্ধতি \Magento\Customer\Api\Data\CustomerInterfaceREST / SOAP API (যদি সক্ষম করা থাকে) এর জন্য উন্মুক্ত করা হয়। তবে কোন পদ্ধতিগুলি উন্মুক্ত হয়েছে তা নির্বাচন করার জন্য আপনার কোনও ডেটা মডেলের প্রয়োজন নেই, কারণ আপনি কেবল পরিবর্তে 'রিয়েল' মডেলের সাথে ইন্টারফেসটি সংযুক্ত করতে পারেন। এভাবেই এটি শেষ হয়েছে \Magento\Catalog\Model\Productএবং\Magento\Catalog\Api\Data\ProductInterface
মিলান সিমেক

2

@ ফিনিক্স 128_ রিককার্ডোটি উত্তরে যুক্ত করা, লক্ষ্য করার মতো বিষয় হ'ল সংগ্রহস্থলগুলি (যেমন। MagentoCms\Api\BlockRepositoryবা Magento\Customer\Api\CustomerRepositoryInterface) এছাড়াও প্রত্যাশা করে যে আপনি নিয়মিত নয়, ডেটা মডেল সরবরাহ করবেন। ডেটা মডেলগুলি স্ট্যান্ডার্ড মডেলগুলির চেয়ে বিমূর্ত স্তর যা কেবল সত্তার সরবরাহিত ডেটা প্রকাশ করে। এই ডেটার সমস্ত "ক্রিয়া" অন্যত্র সরিয়ে নেওয়া হয়েছে।

এটি সিম্ফনি 2 এবং সিমফনি 3-তে সত্তার ধারণার মতো দেখতে কিছুটা দেখা যাচ্ছে যেখানে সত্তাগুলিতে কেবলমাত্র ডেটা থাকে এবং সত্তা ব্যবস্থাপকটিতে কোনও ডেটা ম্যানিপুলেশন হয়। Magento2-এ এই ভূমিকাটি আমার বিশ্বাস, সংগ্রহশালাগুলিতে দেওয়া হয়েছিল।

পুরাতন মডেলগুলি এখনও আমাদের সাথে রয়েছে কারণ তাদের উপায় মেজেন্টো 2 তৈরি হয়েছিল। তারা স্পষ্টতই ফাঁকা সূচক থেকে শুরু করেনি but কিন্তু এম 1 থেকে কিছু কোড পুনরায় ব্যবহার করেছেন। আপনি যখন মান মডেল পদ্ধতি কটাক্ষপাত করা ( load(), save(), এবং delete()) সমস্ত হিসাবে চিহ্নিত করা হয়েছে deprecated। এটি কারণ that কাজটি সঞ্চিতাগুলিতে স্থানান্তরিত হয়েছে (মঞ্জুর হয়েছে যে কিছু ক্ষেত্রে এখন সমস্ত সংগ্রহস্থলগুলি এই নিয়মিত মডেল save()পদ্ধতিটিকে কল করছে তবে রাস্তাটি আমার কাছে পরিষ্কার মনে হয়েছে)।


1
প্রোডাক্ট ডেটা মডেল সম্পর্কে কী। কোনও পণ্য ডেটা মডেল নেই
শিবকুমার

2

মডেলগুলি স্টোরেজ স্বতন্ত্র ব্যবসায়ের যুক্তি সজ্জিত করে , তারা ডেটাবেস ইঞ্জিনগুলি বা দৃষ্টান্তগুলি সম্পর্কে জানে না, ম্যাজেন্টো 2 ডেটা মডেলগুলি হ'ল ডেটা ট্রান্সফার অবজেক্টস (ডিটিও), ডিটিও (ডেটা মডেল) প্রয়োগের জন্য ম্যাজেন্টো সিআরইউডি মডেলগুলির জন্য নির্দিষ্ট ইন্টারফেস (মডেল) ) ম্যাগেন্টো ওয়েবএপিআইয়ের মাধ্যমে কোন শ্রেণীর পদ্ধতি উপলব্ধ তা নির্ধারণ করে।

Model/Data/Customer.phpএপিআইয়ের জন্য কোন পদ্ধতিগুলি উপলভ্য তা নির্ধারণ করে যেখানে Model/Customer.phpলিগ্যাসি ম্যাজেন্টো 1 প্রকারের কাস্টম গেটারগুলি এবং নন-এপিআই ক্রিয়াকলাপের জন্য সিটার উপলব্ধ রয়েছে implementation

Model/ResourceModel/CustomerRepository.php ম্যাজেন্টো 2 - সার্ভিস কন্ট্রাক্টসে চালু হওয়া একটি নতুন বৈশিষ্ট্যের অংশ, এটি ডিটিও (ডেটা মডেল) এর সংমিশ্রণে কাজ করে।

যেহেতু আমরা জানি যে ম্যাজেন্টো ওআরএম মডেলস, রিসোর্স মডেল এবং সংগ্রহগুলি নিয়ে গঠিত এবং এটি ডাটাবেসের উপর নির্ভর করে, একটি পরিষেবা চুক্তির উদ্দেশ্য স্টোরেজ লজিক আড়াল করা যাতে রিপোজিটরিতে সংযুক্ত কোনও ক্লায়েন্ট লক্ষ্য পরিষেবা সংরক্ষণ না করে Service ইঞ্জিন।

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