Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

В اڳوڻو مضمون مون Magento 2 ۾ مصنوعات درآمد ڪرڻ جي عمل کي معمولي طريقي سان بيان ڪيو - ماڊلز ۽ مخزن جي ذريعي. عام طريقو تمام گهٽ ڊيٽا پروسيسنگ جي رفتار آهي. منهنجو ليپ ٽاپ تقريباً هڪ پراڊڪٽ في سيڪنڊ پيدا ڪري رهيو هو. هن تسلسل ۾، مان هڪ پراڊڪٽ کي درآمد ڪرڻ جو هڪ متبادل طريقو سمجهان ٿو - ڊيٽابيس ۾ سڌو داخلا، معياري Magento 2 ميڪانيزم (ماڊل، فيڪٽريز، مخزن) کي پاس ڪندي. پروڊڪٽس کي درآمد ڪرڻ لاءِ قدمن جو تسلسل ڪنهن به پروگرامنگ ٻولي سان ٺهڪندڙ ٿي سگھي ٿو جيڪا MySQL سان ڪم ڪري سگھي ٿي.

اعلان: Magento لاء تيار ڪيل ڪارڪردگي آهي ڊيٽا درآمد ۽، گهڻو ڪري، اهو توهان لاء ڪافي هوندو. تنهن هوندي، جيڪڏهن توهان کي درآمد جي عمل تي وڌيڪ مڪمل ڪنٽرول جي ضرورت آهي، جيڪو توهان وٽ آهي ان لاءِ CSV فائل تيار ڪرڻ تائين محدود ناهي، ڀلي ڪري آيا ٻلي ۾.

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

ڪوڊ ٻنهي مضمونن جي لکڻ جي نتيجي ۾ 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`)
)

پراڊڪٽ رجسٽري ۾ داخلا ٺاهڻ لاءِ گهٽ ۾ گهٽ معلومات گهربل آهي:

  • attribute_set_id
  • sku

اضافي:

  • type_id - جيڪڏهن اسان ان جي وضاحت نه ڪندا آهيون، پوء 'سادو' استعمال ڪيو ويندو

ڊيٽابيس تي سڌو سنئون لکڻ لاءِ، مان استعمال ڪريان ٿو ڊي بي اڊاپٽر جو پاڻ Magento:

function create($sku, $typeId, $attrSetId)
{
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('catalog_product_entity');
    $bind = [
        'sku' => $sku,
        'type_id' => $typeId,
        'attribute_set_id' => $attrSetId
    ];
    $conn->insert($table, $bind);
    $result = $conn->lastInsertId($table);
    return $result;
}

پراڊڪٽ کي رجسٽر ڪرڻ کان پوءِ catalog_product_entity اهو ظاهر ٿئي ٿو منتظم پينل ۾، پراڊڪٽ گرڊ ۾ (فهرست / مصنوعات).

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

پيداوار ۽ ويب سائيٽ جي وچ ۾ تعلق

سائيٽ سان پراڊڪٽ جو وابستگي اهو طئي ڪري ٿو ته ڪهڙو اسٽور ۽ ڊسپلي پراڊڪٽ اڳيان موجود هوندو.

function linkToWebsite($prodId, $websiteId)
{
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('catalog_product_website');
    $bind = [
        'product_id' => $prodId,
        'website_id' => $websiteId
    ];
    $conn->insert($table, $bind);
}

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

بنيادي پيداوار جون خاصيتون

نئين رجسٽرڊ پراڊڪٽ جو اڃا تائين نالو يا تفصيل ناهي. اهو سڀ ڪجهه ذريعي ڪيو ويندو آهي EAV خاصيتون. هتي بنيادي پراڊڪٽ جي خاصيتن جي هڪ فهرست آهي جيڪا ضرورت آهي ته پيداوار لاءِ صحيح طور تي سامهون ڏيکاري وڃي:

  • name
  • price
  • description
  • short_description
  • status
  • tax_class_id
  • url_key
  • visibility

ھڪڙي الڳ وصف ھڪڙي پيداوار ۾ شامل ڪئي وئي آھي ھن طرح (سڃاڻپ حاصل ڪرڻ جا تفصيل ۽ ان جي ڪوڊ مان وصف جي قسم کي ختم ڪيو ويو آھي):

public function create($prodId, $attrCode, $attrValue)
{
    $attrId = /* get attribute ID by attribute code */
    $attrType = /* get attribute type [datetime|decimal|int|text|varchar]) by attribute code */
    if ($attrId) {
        /** @var MagentoFrameworkAppResourceConnection $this->resource */
        /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
        $conn = $this->resource->getConnection();
        $tblName = 'catalog_product_entity_' . $attrType;
        $table = $this->resource->getTableName($tblName);
        $bind = [
            'attribute_id' => $attrId,
            'entity_id' => $prodId,
            /* put all attributes to default store view with id=0 (admin) */
            'store_id' => 0,
            'value' => $attrValue
        ];
        $conn->insert($table, $bind);
    }
}

انتساب ڪوڊ استعمال ڪندي، اسان ان جي سڃاڻپ ۽ ڊيٽا جي قسم جو تعين ڪريون ٿا (datetime, decimal, int, text, varchar)، پوءِ مناسب جدول ۾ انتظامي ونڊو لاءِ ڊيٽا لکو (store_id = 0).

پراڊڪٽ ۾ مٿين صفتن کي شامل ڪرڻ کان پوءِ، توھان ھي تصوير حاصل ڪندا منتظم پينل ۾:

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

انوینٽري ڊيٽا

Magento ۾ ورزن 2.3 کان شروع ٿي، اتي ٽيبل جا ٻه متوازي سيٽ آھن جيڪي مهيا ڪن ٿا انوینٽري جي معلومات جي اسٽوريج (پراڊڪٽ جي مقدار):

  • cataloginventory_*: پراڻي جوڙجڪ؛
  • inventory_*: نئين جوڙجڪ (MSI - ملٽي سورس انوینٽري)؛

توھان کي ضرورت آھي انوینٽري ڊيٽا کي ٻنھي ڍانچين ۾ شامل ڪريو، ڇاڪاڻ ته نئين جوڙجڪ اڃا پراڻي کان مڪمل طور تي آزاد نه آهي (اهو تمام گهڻو امڪان آهي ته لاء default گودام جي نئين جوڙجڪ ۾ هڪ ٽيبل شامل آهي cataloginventory_stock_status جيئن inventory_stock_1).

cataloginventory_

جڏهن ميگنيٽو 2.3 کي ترتيب ڏيو ته اسان وٽ شروعاتي طور تي 2 داخل ٿين ٿيون store_website، جيڪو ٻن سائيٽن سان ملندو آهي - انتظامي ۽ مکيه ڪلائنٽ:

website_id|code |name        |sort_order|default_group_id|is_default|
----------|-----|------------|----------|----------------|----------|
         0|admin|Admin       |         0|               0|         0|
         1|base |Main Website|         0|               1|         1|

ٽيبل cataloginventory_stock اسان وٽ صرف هڪ داخلا آهي:

stock_id|website_id|stock_name|
--------|----------|----------|
       1|         0|Default   |

اهو آهي، اسان جي پراڻي ڍانچي ۾ صرف هڪ "گودام" آهي (stock) ۽ اهو انتظامي ويب سائيٽ سان ڳنڍيل آهي. ايڊمن پينل ذريعي نوان شامل ڪرڻ sources/stocks MSI ۾ (نئين ڍانچي) جي نتيجي ۾ نئين داخل ٿيڻ جو نتيجو ناهي cataloginventory_stock.

پراڻي ڍانچي ۾ پراڊڪٽس بابت انوینٽري ڊيٽا شروعاتي طور تي جدولن ۾ رڪارڊ ٿيل آهي:

  • cataloginventory_stock_item
  • cataloginventory_stock_status

cataloginventory_stock_item

function createOldItem($prodId, $qty)
{
    $isQtyDecimal = (((int)$qty) != $qty);
    $isInStock = ($qty > 0);
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('cataloginventory_stock_item');
    $bind = [
        'product_id' => $prodId,
        /* we use one only stock in 'cataloginventory' structure by default */
        'stock_id' => 1,
        'qty' => $qty,
        'is_qty_decimal' => $isQtyDecimal,
        'is_in_stock' => $isInStock,
        /* default stock is bound to admin website (see `cataloginventory_stock`) */
        'website_id' => 0
    ];
    $conn->insert($table, $bind);
}

cataloginventory_stock_status

function createOldStatus($prodId, $qty)
{
    $isInStock = ($qty > 0);
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('cataloginventory_stock_status');
    $bind = [
        'product_id' => $prodId,
        /* we use one only stock in 'cataloginventory' structure by default */
        'stock_id' => 1, 
        'qty' => $qty,
        'stock_status' => MagentoCatalogInventoryApiDataStockStatusInterface::STATUS_IN_STOCK,
        /* default stock is bound to admin website (see `cataloginventory_stock`) */
        'website_id' => 0 
    ];
    $conn->insert($table, $bind);
}

inventory_

شروعات ۾، انوینٽري ڊيٽا کي محفوظ ڪرڻ لاء نئين جوڙجڪ 1 تي مشتمل آهي "ذريعو"(inventory_source):

source_code|name          |enabled|description   |latitude|longitude|country_id|...|
-----------|--------------|-------|--------------|--------|---------|----------|...|
default    |Default Source|      1|Default Source|0.000000| 0.000000|US        |...|

۽ هڪ "گودام"(inventory_stock):

stock_id|name         |
--------|-------------|
       1|Default Stock|

«ذريعو» پروڊڪٽس لاءِ فزيڪل اسٽوريج جي نمائندگي ڪري ٿو (ريڪارڊ ۾ جسماني همراهن ۽ ميلنگ ايڊريس شامل آهن). "گودامڪيترن ئي "ذريعن" جو هڪ منطقي اتحاد آهي (inventory_source_stock_link)

link_id|stock_id|source_code|priority|
-------|--------|-----------|--------|
      1|       1|default    |       1|

سطح تي جنهن تي سيلز چينل سان ڪنيڪشن ٿئي ٿي (inventory_stock_sales_channel)

type   |code|stock_id|
-------|----|--------|
website|base|       1|

ڊيٽا جي جوڙجڪ جي لحاظ کان، مختلف قسم جا سيلز چينل فرض ڪيا ويا آهن، پر ڊفالٽ طور تي صرف ڪنيڪشن "اسٽاڪ"-"ويب سائيٽ"(ويب سائيٽ جو لنڪ ويب سائيٽ ڪوڊ جي پٺيان آهي - base).

هڪ "گودام"ڪيترن سان ڳنڍيل ٿي سگهي ٿو"ذريعا"۽ هڪ"ذريعو"- گھڻن تائين"گودام"(گھڻن کان گھڻا تعلق). استثنا ڊفالٽ آهن "ذريعو"۽"گودام". اهي ٻين ادارن سان ٻيهر ڳنڍيل نه آهن (ڪوڊ جي سطح تي حد - غلطي "ڊفالٽ ماخذ يا ڊفالٽ اسٽاڪ سان لاڳاپيل لنڪ محفوظ نه ٿو ڪري سگھجي"). Magento 2 ۾ MSI جي جوڙجڪ بابت وڌيڪ تفصيل مضمون ۾ ڳولهي سگهجن ٿا "گودام مينيجمينٽ سسٽم CQRS ۽ ايونٽ سورسنگ استعمال ڪندي. ڊيزائن".

مان ڊفالٽ ڪنفيگريشن استعمال ڪندس ۽ سڀني انوینٽري جي معلومات کي ماخذ ۾ شامل ڪندس default، جيڪو ڪوڊ سان ويب سائيٽ سان لاڳاپيل سيلز چينل ۾ شامل آهي base (اسٽور جي سامهون واري آخر سان ملندڙ آهي - ڏسو store_website):

function createNewItem($sku, $qty)
{
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('inventory_source_item');
    $bind = [
        'source_code' => 'default',
        'sku' => $sku,
        'quantity' => $qty,
        'status' => MagentoInventoryApiApiDataSourceItemInterface::STATUS_IN_STOCK
    ];
    $conn->insert($table, $bind);
}

ايڊمن پينل ۾ پراڊڪٽ ۾ انوینٽري ڊيٽا شامل ڪرڻ کان پوءِ، توھان ھي تصوير حاصل ڪندا:

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

ميڊيا

جڏهن ”دستي طور“ ايڊمن پينل ذريعي پراڊڪٽ ۾ تصوير شامل ڪندي، لاڳاپيل معلومات هيٺ ڏنل جدولن ۾ لکيل آهي:

  • catalog_product_entity_media_gallery: ميڊيا رجسٽري (تصويرون ۽ وڊيو فائلون)؛
  • 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, ته جيئن پليٽ فارم ان کي تصوير طور استعمال ڪري سگهي ٿي جڏهن فهرست مان مصنوعات بيان ڪري ٿي.

رجسٽرڊ ۾ پوسٽ ٿيل ./pub/media/catalog/product/ ميڊيا فائل (فائل کي رکڻ جو عمل پاڻ هن مضمون ۾ بحث نه ڪيو ويو آهي):

function createMediaGallery($imgPathPrefixed)
{
    $attrId = /* get attribute ID by attribute code 'media_gallery' */
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('catalog_product_entity_media_gallery');
    $bind = [
        'attribute_id' => $attrId,
        'value' => $imgPathPrefixed,
        /* 'image' or 'video' */
        'media_type' => 'image',
        'disabled' => false
    ];
    $conn->insert($table, $bind);
    $result = $conn->lastInsertId($table);
    return $result;
}

جڏهن رجسٽر ٿيو، هڪ نئون ميڊيا فائل هڪ سڃاڻپ ڪندڙ مقرر ڪيو ويو آهي.

اسان رجسٽرڊ ميڊيا فائل کي ڊفالٽ اسٽور فرنٽ لاءِ لاڳاپيل پراڊڪٽ سان جوڙيو ٿا:

function createGalleryValue($mediaId, $prodId)
{
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('catalog_product_entity_media_gallery_value');
    $bind = [
        'value_id' => $mediaId,
        /* use admin store view by default */
        'store_id' => 0,
        'entity_id' => $prodId,
        'label' => null,
        /* we have one only image */
        'position' => 1,
        'disabled' => false
    ];
    $conn->insert($table, $bind);
}

اسان رجسٽرڊ ميڊيا فائل کي لاڳاپيل پراڊڪٽ سان ڳنڍيندا آهيون بغير ڪنهن اسٽور جي فرنٽ سان ڳنڍيل. اهو واضح ناهي ته هي ڊيٽا ڪٿي استعمال ڪئي وئي آهي ۽ ڇو اهو ناممڪن آهي ته پوئين جدول مان ڊيٽا تائين رسائي، پر هي جدول موجود آهي ۽ ڊيٽا ان تي لکيو ويندو آهي جڏهن هڪ تصوير پيداوار ۾ شامل ڪئي ويندي آهي. سو اهو ئي آهي.

function createGalleryValueToEntity($mediaId, $prodId)
{
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('catalog_product_entity_media_gallery_value_to_entity');
    $bind = [
        'value_id' => $mediaId,
        'entity_id' => $prodId
    ];
    $conn->insert($table, $bind);
}

catalog_product_entity_varchar

ميڊيا فائل مختلف ڪردارن سان استعمال ڪري سگھجي ٿي (لاڳاپيل وصف ڪوڊ قوس ۾ ڏيکاريل آھي):

  • بنياد (image)
  • ننڍي تصوير (small_image)
  • ٿمب نيل (thumbnail)
  • Swatch تصوير (swatch_image)

ميڊيا فائل ۾ ڪردار کي ڳنڍڻ بلڪل ائين ئي ٿيندو آهي catalog_product_entity_varchar. بائنڊنگ ڪوڊ ساڳيو آهي ڪوڊ ۾ "بنيادي پيداوار جون خاصيتون".

ايڊمن پينل ۾ پراڊڪٽ ۾ تصوير شامل ڪرڻ کان پوءِ اهو هن طرح نظر اچي ٿو:

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

درجا بندي

مکيه جدولن تي مشتمل ڊيٽا درجي جي لحاظ کان:

  • catalog_category_entity: درجن جو رجسٽر؛
  • catalog_category_product: مصنوعات ۽ درجابندي جي وچ ۾ ڪنيڪشن؛
  • catalog_category_entity_*: EAV وصف قدر؛

شروعات ۾، هڪ خالي Magento ايپليڪيشن ۾، درجابندي رجسٽري ۾ 2 قسمون شامل آهن (مون ڪالمن جا نالا مختصر ڪيا: crt - created_at, upd - updated_at):

entity_id|attribute_set_id|parent_id|crt|upd|path|position|level|children_count|
---------|----------------|---------|---|---|----|--------|-----|--------------|
        1|               3|        0|...|...|1   |       0|    0|             1|
        2|               3|        1|...|...|1/2 |       1|    1|             0|

id = 1 سان ڪيٽيگري پوري Magento catalog جو روٽ آهي ۽ نه ته ايڊمن پينل ۾ يا فرنٽ پيج تي موجود آهي. درجابندي سان id = 2 (ڊفالٽ ڪيٽيگري) بنيادي سائيٽ جي مکيه اسٽور لاءِ روٽ ڪيٽيگري آهي (مکيه ويب سائيٽ اسٽور) ٺاهي وئي جڏهن ايپليڪيشن کي ترتيب ڏني وئي آهي (ڏسو. منتظم / اسٽور / سڀ اسٽور). ان کان علاوه، اسٽور جو روٽ ڪلاس پاڻ وٽ موجود ناهي، صرف ان جا ذيلي زمرا.

جيئن ته هن آرٽيڪل جو موضوع اڃا تائين پروڊڪٽس تي ڊيٽا درآمد ڪري رهيو آهي، مان ڪيٽيگريز ٺاهڻ وقت ڊيٽابيس ۾ سڌي داخلا استعمال نه ڪندس، پر پاڻ Magento پاران مهيا ڪيل ڪلاس استعمال ڪندس (ماڊل ۽ مخزن). ڊيٽابيس ۾ سڌو داخلا صرف درآمد ٿيل پراڊڪٽ کي ڪيٽيگري سان ڳنڍڻ لاءِ استعمال ڪيو ويندو آهي (ڪيٽيگري ان جي نالي سان ملائي ويندي آهي، ۽ ڪيٽيگري جي سڃاڻپ ملاپ دوران حاصل ڪئي ويندي آهي):

function create($prodId, $catId)
{
    /** @var MagentoFrameworkAppResourceConnection $this->resource */
    /** @var MagentoFrameworkDBAdapterPdoMysql $conn */
    $conn = $this->resource->getConnection();
    $table = $this->resource->getTableName('catalog_category_product');
    $bind = [
        'category_id' => $catId,
        'product_id' => $prodId,
    ];
    $conn->insert($table, $bind);
}

"ڪئٽيگري 1" ۽ "ڪئٽيگوري 2" ۾ پراڊڪٽ لنڪ شامل ڪرڻ کان پوءِ، ايڊمن پينل ۾ پراڊڪٽ جا تفصيل ڪجھ ھن طرح نظر اچن ٿا:

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

اضافي ڪارناما

هڪ دفعو ڊيٽا درآمد مڪمل ٿيڻ بعد، توهان کي هيٺين اضافي قدمن کي مڪمل ڪرڻ جي ضرورت آهي:

  • ڊيٽا انڊيڪسنگ: ڪنسول ۾ ڪال ڪريو ./bin/magento indexer:reindex;
  • پراڊڪٽس/ڪئٽيگريز لاءِ URLs کي ٻيهر پيدا ڪرڻ: توهان استعمال ڪري سگهو ٿا واڌ“elgentos/regenerate-catalog-urls«

پراڊڪٽس ايڊمن پينل ۾ اضافي عملن کي انجام ڏيڻ کان پوءِ:

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

۽ سامهون:

Magento 2: درآمد ڪريو مصنوعات سڌو سنئون ڊيٽابيس ۾

خلاصو

ساڳي ئي پراڊڪٽس جو سيٽ (10 ٽڪر) جيئن اڳئين مضمون ۾ درآمد ڪيو ويو آهي گهٽ ۾ گهٽ هڪ آرڊر جي تيزيءَ سان (1 سيڪنڊ بمقابله 10). رفتار جو وڌيڪ صحيح اندازو لڳائڻ لاءِ، توھان کي ضرورت آھي وڏي تعداد ۾ پروڊڪٽس - ڪيترائي سؤ، يا بھتر اڃان ھزارين. تنهن هوندي به، ان پٽ ڊيٽا جي اهڙي ننڍڙي سائيز جي باوجود، اسان اهو نتيجو ڪري سگهون ٿا ته ميگينٽو (ماڊل ۽ مخزن) پاران مهيا ڪيل اوزارن جو استعمال اهم آهي (مان زور ڏيان ٿو - گهڻو!) گهربل ڪارڪردگي جي ترقي کي تيز ڪريو، پر ساڳئي وقت خاص طور تي (مان زور ڏيان ٿو - گهڻو!) انهي رفتار کي گھٽايو جنهن تي ڊيٽا ڊيٽابيس ۾ اچي ٿي.

نتيجي طور، پاڻي گندو ٿي ويو ۽ اهو وحي نه آهي. بهرحال، هاڻي مون وٽ راند ڪرڻ لاء ڪوڊ آهي ۽ شايد ڪجهه وڌيڪ دلچسپ نتيجن تي اچي.

جو ذريعو: www.habr.com