В اڳوڻو مضمون مون Magento 2 ۾ مصنوعات درآمد ڪرڻ جي عمل کي معمولي طريقي سان بيان ڪيو - ماڊلز ۽ مخزن جي ذريعي. عام طريقو تمام گهٽ ڊيٽا پروسيسنگ جي رفتار آهي. منهنجو ليپ ٽاپ تقريباً هڪ پراڊڪٽ في سيڪنڊ پيدا ڪري رهيو هو. هن تسلسل ۾، مان هڪ پراڊڪٽ کي درآمد ڪرڻ جو هڪ متبادل طريقو سمجهان ٿو - ڊيٽابيس ۾ سڌو داخلا، معياري Magento 2 ميڪانيزم (ماڊل، فيڪٽريز، مخزن) کي پاس ڪندي. پروڊڪٽس کي درآمد ڪرڻ لاءِ قدمن جو تسلسل ڪنهن به پروگرامنگ ٻولي سان ٺهڪندڙ ٿي سگھي ٿو جيڪا MySQL سان ڪم ڪري سگھي ٿي.
اعلان: Magento لاء تيار ڪيل ڪارڪردگي آهي ڊيٽا درآمد ۽، گهڻو ڪري، اهو توهان لاء ڪافي هوندو. تنهن هوندي، جيڪڏهن توهان کي درآمد جي عمل تي وڌيڪ مڪمل ڪنٽرول جي ضرورت آهي، جيڪو توهان وٽ آهي ان لاءِ CSV فائل تيار ڪرڻ تائين محدود ناهي، ڀلي ڪري آيا ٻلي ۾.
ڪوڊ ٻنهي مضمونن جي لکڻ جي نتيجي ۾ Magento ماڊل ۾ ڏسي سگھجي ٿو "flancer32/mage2_ext_demo_import". ھتي ڪجھ پابنديون آھن جن جي مون پيروي ڪئي آھي ڊيمو ماڊل ڪوڊ کي آسان ڪرڻ لاءِ:
مصنوعات صرف ٺاهيا ويا آهن، اپڊيٽ نه ڪيا ويا آهن.
هڪ گودام
صرف درجي جا نالا درآمد ڪيا ويا آهن، انهن جي جوڙجڪ کان سواء
ڊيٽا جي جوڙجڪ نسخي 2.3 سان مطابقت رکي ٿي
هڪ واحد پراڊڪٽ درآمد ڪرڻ لاءِ JSON:
{
"sku": "MVA20D-UBV-3",
"name": "Заглушка для пломбировки ВА47-29 IEK",
"desc": "Обеспечение доступа к устройствам ...",
"desc_short": "Заглушка для пломбировки ВА47-29 IEK предназначена для ...",
"price": 5.00,
"qty": 25,
"categories": ["Категория 1", "Категория 2"],
"image_path": "mva20d_ubv_3.png"
}
درآمد جي مکيه مرحلن جو جائزو
پراڊڪٽ جي پاڻ رجسٽريشن
پيداوار ۽ ويب سائيٽ جي وچ ۾ ڪنيڪشن
بنيادي پيداوار خاصيتون (EAV)
انوینٽري ڊيٽا (اسٽاڪ ۾ پيداوار جي مقدار)
ميڊيا (تصويرون)
ڪيٽيگريز سان لاڳاپو
پيداوار جي رجسٽريشن
پراڊڪٽ جي بنيادي معلومات ملي سگهي ٿي catalog_product_entity:
CREATE TABLE `catalog_product_entity` (
`entity_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Entity Id',
`attribute_set_id` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Attribute Set ID',
`type_id` varchar(32) NOT NULL DEFAULT 'simple' COMMENT 'Type ID',
`sku` varchar(64) DEFAULT NULL COMMENT 'SKU',
`has_options` smallint(6) NOT NULL DEFAULT '0' COMMENT 'Has Options',
`required_options` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Required Options',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Creation Time',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'Update Time',
PRIMARY KEY (`entity_id`),
KEY `CATALOG_PRODUCT_ENTITY_ATTRIBUTE_SET_ID` (`attribute_set_id`),
KEY `CATALOG_PRODUCT_ENTITY_SKU` (`sku`)
)
توھان کي ضرورت آھي انوینٽري ڊيٽا کي ٻنھي ڍانچين ۾ شامل ڪريو، ڇاڪاڻ ته نئين جوڙجڪ اڃا پراڻي کان مڪمل طور تي آزاد نه آهي (اهو تمام گهڻو امڪان آهي ته لاء default گودام جي نئين جوڙجڪ ۾ هڪ ٽيبل شامل آهي cataloginventory_stock_status جيئن inventory_stock_1).
cataloginventory_
جڏهن ميگنيٽو 2.3 کي ترتيب ڏيو ته اسان وٽ شروعاتي طور تي 2 داخل ٿين ٿيون store_website، جيڪو ٻن سائيٽن سان ملندو آهي - انتظامي ۽ مکيه ڪلائنٽ:
سطح تي جنهن تي سيلز چينل سان ڪنيڪشن ٿئي ٿي (inventory_stock_sales_channel)
type |code|stock_id|
-------|----|--------|
website|base| 1|
ڊيٽا جي جوڙجڪ جي لحاظ کان، مختلف قسم جا سيلز چينل فرض ڪيا ويا آهن، پر ڊفالٽ طور تي صرف ڪنيڪشن "اسٽاڪ"-"ويب سائيٽ"(ويب سائيٽ جو لنڪ ويب سائيٽ ڪوڊ جي پٺيان آهي - base).
هڪ "گودام"ڪيترن سان ڳنڍيل ٿي سگهي ٿو"ذريعا"۽ هڪ"ذريعو"- گھڻن تائين"گودام"(گھڻن کان گھڻا تعلق). استثنا ڊفالٽ آهن "ذريعو"۽"گودام". اهي ٻين ادارن سان ٻيهر ڳنڍيل نه آهن (ڪوڊ جي سطح تي حد - غلطي "ڊفالٽ ماخذ يا ڊفالٽ اسٽاڪ سان لاڳاپيل لنڪ محفوظ نه ٿو ڪري سگھجي"). Magento 2 ۾ MSI جي جوڙجڪ بابت وڌيڪ تفصيل مضمون ۾ ڳولهي سگهجن ٿا "گودام مينيجمينٽ سسٽم CQRS ۽ ايونٽ سورسنگ استعمال ڪندي. ڊيزائن".
مان ڊفالٽ ڪنفيگريشن استعمال ڪندس ۽ سڀني انوینٽري جي معلومات کي ماخذ ۾ شامل ڪندس default، جيڪو ڪوڊ سان ويب سائيٽ سان لاڳاپيل سيلز چينل ۾ شامل آهي base (اسٽور جي سامهون واري آخر سان ملندڙ آهي - ڏسو store_website):
catalog_product_entity_media_gallery_value: ميڊيا کي پروڊڪٽس ۽ شوڪيسز سان ڳنڍڻ (مقامي سازي)؛
catalog_product_entity_media_gallery_value_to_entity: ميڊيا کي صرف مصنوعات سان ڳنڍڻ (شايد پراڊڪٽ لاءِ ڊفالٽ ميڊيا مواد)؛
catalog_product_entity_varchar: اهي ڪردار جن ۾ تصوير استعمال ڪئي وئي آهي هتي ذخيرو ٿيل آهن؛
۽ تصويرون پاڻ ڊاريڪٽري ۾ محفوظ ڪيون ويون آهن ./pub/media/catalog/product/x/y/ڪٿي x и y - تصويري فائل جي نالي جو پهريون ۽ ٻيو اکر. مثال طور، فائل image.png جي طور تي محفوظ ڪيو وڃي ./pub/media/catalog/product/i/m/image.png, ته جيئن پليٽ فارم ان کي تصوير طور استعمال ڪري سگهي ٿي جڏهن فهرست مان مصنوعات بيان ڪري ٿي.
catalog_product_entity_media_gallery
رجسٽرڊ ۾ پوسٽ ٿيل ./pub/media/catalog/product/ ميڊيا فائل (فائل کي رکڻ جو عمل پاڻ هن مضمون ۾ بحث نه ڪيو ويو آهي):
اسان رجسٽرڊ ميڊيا فائل کي لاڳاپيل پراڊڪٽ سان ڳنڍيندا آهيون بغير ڪنهن اسٽور جي فرنٽ سان ڳنڍيل. اهو واضح ناهي ته هي ڊيٽا ڪٿي استعمال ڪئي وئي آهي ۽ ڇو اهو ناممڪن آهي ته پوئين جدول مان ڊيٽا تائين رسائي، پر هي جدول موجود آهي ۽ ڊيٽا ان تي لکيو ويندو آهي جڏهن هڪ تصوير پيداوار ۾ شامل ڪئي ويندي آهي. سو اهو ئي آهي.
id = 1 سان ڪيٽيگري پوري Magento catalog جو روٽ آهي ۽ نه ته ايڊمن پينل ۾ يا فرنٽ پيج تي موجود آهي. درجابندي سان id = 2 (ڊفالٽ ڪيٽيگري) بنيادي سائيٽ جي مکيه اسٽور لاءِ روٽ ڪيٽيگري آهي (مکيه ويب سائيٽ اسٽور) ٺاهي وئي جڏهن ايپليڪيشن کي ترتيب ڏني وئي آهي (ڏسو. منتظم / اسٽور / سڀ اسٽور). ان کان علاوه، اسٽور جو روٽ ڪلاس پاڻ وٽ موجود ناهي، صرف ان جا ذيلي زمرا.
جيئن ته هن آرٽيڪل جو موضوع اڃا تائين پروڊڪٽس تي ڊيٽا درآمد ڪري رهيو آهي، مان ڪيٽيگريز ٺاهڻ وقت ڊيٽابيس ۾ سڌي داخلا استعمال نه ڪندس، پر پاڻ Magento پاران مهيا ڪيل ڪلاس استعمال ڪندس (ماڊل ۽ مخزن). ڊيٽابيس ۾ سڌو داخلا صرف درآمد ٿيل پراڊڪٽ کي ڪيٽيگري سان ڳنڍڻ لاءِ استعمال ڪيو ويندو آهي (ڪيٽيگري ان جي نالي سان ملائي ويندي آهي، ۽ ڪيٽيگري جي سڃاڻپ ملاپ دوران حاصل ڪئي ويندي آهي):