ะ
แแแกแฃแฎแแกแแแแแแแแแก แจแแแฆแฃแแแแก แแแแแชแฎแแแ: แแแแแแขแแก แแฅแแก แแแ แคแฃแแฅแชแแ
แแ แแแ แกแขแแขแแแก แแแฌแแ แแก แจแแแแแแ แแแฆแแแฃแแ แแแแ แจแแแแซแแแแ แแฎแแแแ แแแแแแขแแก แแแแฃแแจแ "
- แแ แแแฃแฅแขแแแ แแฎแแแแ แแฅแแแแแ แแ แแ แแแแแฎแแแแแ.
- แแ แแ แกแแฌแงแแแ
- แแแแแ แขแแ แแแฃแแแ แแฎแแแแ แแแขแแแแ แแแแแก แกแแฎแแแแแ, แแแแ แกแขแ แฃแฅแขแฃแ แแก แแแ แแจแ
- แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแแ แจแแแกแแแแแแแ 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-แก DB แแแแแขแแ แก:
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
แแก แฎแแแฃแแ แฎแแแแ แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ, แแ แแแฃแฅแขแแก แฅแกแแแจแ (แแแขแแแแแ/แแ แแแฃแฅแขแแแ).
แแ แแแฃแฅแขแกแ แแ แแแแกแแแขแก แจแแ แแก แฃแ แแแแ แแแแ
แแ แแแฃแฅแขแแก แกแแแขแแแ แแกแแชแแแชแแ แแแแกแแแฆแแ แแแก, แ แแแแ แแแฆแแแแแแจแ แแ แแแแแคแแแแแจแ แแฅแแแแ แแ แแแฃแฅแขแ แฎแแแแแกแแฌแแแแแ แฌแแแ แแฎแแ แแก.
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);
}
แแ แแแฃแฅแขแแก แซแแ แแแแแ แแขแ แแแฃแขแแแ
แแฎแแแ แแแ แแแแกแขแ แแ แแแฃแ แแ แแแฃแฅแขแก แฏแแ แแ แแฅแแก แกแแฎแแแ แแ แแฆแฌแแ แ. แแก แงแแแแแคแแ แ แแแแแแแ แแแจแแแแแแ
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);
}
}
แแขแ แแแฃแขแแก แแแแแก แแแแแงแแแแแแ, แฉแแแ แแแแแกแแแฆแแ แแแ แแแก ID-แก แแ แแแแแชแแแแ แขแแแก (datetime
, decimal
, int
, text
, varchar
), แจแแแแแ แฉแแฌแแ แแ แแแแแแแกแขแ แแชแแฃแแ แคแแแฏแ แแก แแแแแชแแแแแ แจแแกแแแแแแก แชแฎแ แแแจแ (store_id = 0
).
แแ แแแฃแฅแขแแ แแแแแแฆแแแจแแฃแแ แแขแ แแแฃแขแแแแก แแแแแขแแแแก แจแแแแแ, แแฅแแแ แแแแฆแแแ แแ แกแฃแ แแแก แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ:
แแแแแแขแแ แแก แแแแแชแแแแแ
Magento-แจแ 2.3 แแแ แกแแแแแ แแแฌแงแแแฃแแ, แแ แกแแแแแก แชแฎแ แแแแแแก แแ แ แแแ แแแแแฃแ แ แแแแ แแแ, แ แแแแแแแช แฃแแ แฃแแแแแงแแคแแ แแแแแแขแแ แแก แแแคแแ แแแชแแแก แจแแแแฎแแแก (แแ แแแฃแฅแขแแก แ แแแแแแแแ):
cataloginventory_*
: แซแแแแ แกแขแ แฃแฅแขแฃแ แ;inventory_*
: แแฎแแแ แกแขแ แฃแฅแขแฃแ แ (MSI - Multi Source Inventory);
แแฅแแแ แฃแแแ แแแแแแขแแ แแแแแแขแแ แแก แแแแแชแแแแแ แแ แแแ แกแขแ แฃแฅแขแฃแ แแก, แ แแแแแ แแฎแแแ แกแขแ แฃแฅแขแฃแ แ แฏแแ แแ แแ แแก แกแ แฃแแแแ แแแแแฃแแแแแแแแ แซแแแแแกแแแ (แซแแแแแ แกแแแแ แแฃแแแ, แ แแ แแแแกแแแแก default
แกแแฌแงแแแ แแฎแแ แกแขแ แฃแฅแขแฃแ แแจแ แฉแแ แแฃแแแ แแแแแแ cataloginventory_stock_status
แ แแแแ แช inventory_stock_1
).
แแแขแแแแแแก แแแแแแขแแ แ_
Magneto 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);
}
แแแแแแขแแ แ_
แแแแแแแแ แแแแแ, แแแแแแขแแ แแก แแแแแชแแแแแแก แจแแกแแแแฎแแ แแฎแแแ แกแขแ แฃแฅแขแฃแ แ แจแแแชแแแก 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
).
แแ แแ "แกแแฌแงแแแ"แจแแแซแแแแ แ แแแแแแแแแกแแแ แแแแแแจแแ แแแ"แฌแงแแ แแแแ"แแ แแ แแ "แฌแงแแ แ"-แ แแแแแแแแ"แกแแฌแงแแแแแ"(แแแแ แแแแ แแแแ แแแ แฃแ แแแแ แแแแ). แแแแแแแแแแกแแแ แแแแฃแแแกแฎแแแแแ "แฌแงแแ แ"แแ"แกแแฌแงแแแ". แแกแแแ แฎแแแแฎแแ แแ แแ แแก แแแแแแจแแ แแแฃแแ แกแฎแแ แแ แแแฃแแแแแแ (แจแแแฆแฃแแแ แแแแแก แแแแแแ - แจแแชแแแแ "แแแแฃแแแกแฎแแแ แฌแงแแ แแกแแแ แแ แแแแฃแแแกแฎแแแ แแแ แแแแแ แแแแแแจแแ แแแฃแแ แแแฃแแแก แจแแแแฎแแ แจแแฃแซแแแแแแแ"). แแแแแขแแแแแ แแแขแแแแแ MSI แกแขแ แฃแฅแขแฃแ แแก แจแแกแแฎแแ Magento 2-แจแ แจแแแแซแแแแ แแฎแแแแ แกแขแแขแแแจแ "
แแ แแแแแแแงแแแแ แแแแฃแแแกแฎแแแ แแแแคแแแฃแ แแชแแแก แแ แแแแแแแขแแ แแแแแแขแแ แแก แงแแแแ แแแคแแ แแแชแแแก แฌแงแแ แแก 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);
}
แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ แแ แแแฃแฅแขแแ แแแแแแขแแ แแก แแแแแชแแแแแแก แแแแแขแแแแก แจแแแแแ, แแฅแแแ แแแแฆแแแ แแ แกแฃแ แแแก:
แแแแแ
แแแแแแแกแขแ แแชแแฃแแ แแแแแแแก แแแจแแแแแแ แแ แแแฃแฅแขแแ แกแฃแ แแแแก โแฎแแแแโ แแแแแขแแแแกแแก แจแแกแแแแแแกแ แแแคแแ แแแชแแ แฉแแแฌแแ แแแ แจแแแแแ แชแฎแ แแแแแจแ:
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
, แ แแแ แแแแขแคแแ แแแ แแแแแแงแแแแก แแแ แ แแแแ แช แกแฃแ แแแ แแแขแแแแแแแแ แแ แแแฃแฅแขแแแแก แแฆแฌแแ แแกแแก.
catalog_product_entity_media_gallery
แ แแแแกแขแ แแชแแ แแแแแฅแแแงแแแแฃแแแ ./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;
}
แ แแแแกแขแ แแชแแแกแแก, แแฎแแ แแแแแ แคแแแแก แแแแญแแแ แแแแแขแแคแแแแขแแ แ.
catalog_product_entity_media_gallery_value
แฉแแแ แแฃแแแแจแแ แแแ แ แแแแกแขแ แแ แแแฃแ แแแแแ แคแแแแก แแแแฃแแแกแฎแแแแ แแแขแ แแแแก แจแแกแแแแแแก แแ แแแฃแฅแขแแแ:
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);
}
catalog_product_entity_media_gallery_value_to_entity
แฉแแแ แ แแแแกแขแ แแ แแแฃแ แแแแแแคแแแแก แแฃแแแแจแแ แแแ แจแแกแแแแแแก แแ แแแฃแฅแขแก แแแฆแแแแแก แแแขแ แแแแแ แแแแแฃแแแแแก แแแ แแจแ. แแแฃแ แแแแแแแแ แแฃแกแขแแ แกแแ แแแแแแงแแแแแ แแก แแแแแชแแแแแ แแ แ แแขแแ แแ แแก แจแแฃแซแแแแแแ แฌแแแ แชแฎแ แแแแก แแแแแชแแแแแแ แฌแแแแแ, แแแแ แแ แแก แชแฎแ แแแ แแ แกแแแแแก แแ แแแกแแ แแแแแชแแแแแ แแฌแแ แแแ, แ แแแแกแแช แแ แแแฃแฅแขแก แแแแขแแแ แกแฃแ แแแ. แแกแ แ แแ, แแก แแ แแก.
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
. แกแแแแแแแแฃแแ แแแแ แแกแแแแกแแ แแแแแก "แแ แแแฃแฅแขแแก แซแแ แแแแแ แแขแ แแแฃแขแแแ".
แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ แแ แแแฃแฅแขแแ แกแฃแ แแแแก แแแแแขแแแแก แจแแแแแ แแกแ แแแแแแงแฃแ แแแ:
แแแขแแแแ แแ
แซแแ แแแแแ แชแฎแ แแแแแ, แ แแแแแแแช แจแแแชแแแก แแแแแชแแแแแก แแแขแแแแ แแแแแก แแแฎแแแแแ:
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 แแแขแแแแแแก แคแแกแแ แแ แแ แแ แแก แฎแแแแแกแแฌแแแแแ แแ แช แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ แแ แแ แช แแแ แแแ แแแแ แแแ. แแแขแแแแ แแ id=2-แแ (แแแแฃแแแกแฎแแแแ แแแขแแแแ แแ) แแ แแก แซแแ แแแแแ แกแแแขแแก แแแแแแ แ แแแฆแแแแแก แซแแ แแฃแแ แแแขแแแแ แแ (แกแแแขแแก แแแแแแ แ แแแฆแแแแ) แจแแแฅแแแ แแแแแแแชแแแก แแแแแแแแแแกแแก (แแฎ. แแแแแแแกแขแ แแขแแ แ / แแแฆแแแแแแ / แงแแแแ แแแฆแแแแ). แฃแคแ แ แแแขแแช, แแแแแ แแแฆแแแแแก แซแแ แแฃแแ แแแขแแแแ แแ แแกแแแ แแ แแ แแก แฎแแแแแกแแฌแแแแแ แฌแแแ แแฎแแ แแก, แแฎแแแแ แแแกแ แฅแแแแแขแแแแ แแแแ.
แแแแแแแแ แแ แกแขแแขแแแก แแแแ แแแแแ แแ แแแฃแฅแขแแแแ แแแแแชแแแแแแก แแแแแ แขแแ, แแแขแแแแ แแแแแก แจแแฅแแแแกแแก แแ แแแแแแแงแแแแ แแแแแชแแแแ แแแแแจแ แแแ แแแแแ แจแแงแแแแแก, แแ แแแแ แแแแแแแงแแแแ แแแแแ แแแแแแขแแก แแแแ แแแฌแแแแแฃแ แแแแกแแแก (แแแแแแแแก แแ แกแแชแแแแแก). แแแแแชแแแแ แแแแแจแ แแแ แแแแแ แ แจแแงแแแแ แแแแแแงแแแแแ แแฎแแแแ แแแแแ แขแแ แแแฃแแ แแ แแแฃแฅแขแแก แแแขแแแแ แแแกแแแ แแกแแชแแ แแแแกแแแแก (แแแขแแแแ แแแก แแแกแแฎแแแแแ แแแแฎแแแแ, แฎแแแ แแแขแแแแ แแแก แแแแแขแแคแแแแขแแ แ แแฎแกแแแแ แแแแแฎแแแแแกแแก):
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โ, แแ แแแฃแฅแขแแก แแแขแแแแแ แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ แแกแ แแแแแแงแฃแ แแแ:
แแแแแขแแแแแ แฅแแแแแแแแ
แแแแแชแแแแ แแแแแ แขแแก แแแกแ แฃแแแแแก แจแแแแแ, แแฅแแแ แฃแแแ แจแแแกแ แฃแแแ แจแแแแแแ แแแแแขแแแแแ แแแแแฏแแแ:
- แแแแแชแแแแ แแแแแฅแกแแ แแแ: แแแ แแแแ แแแแกแแแจแ
./bin/magento indexer:reindex
; - แแ แแแฃแฅแขแแแแก/แแแขแแแแ แแแแแก URL-แแแแก แ แแแแแแ แแชแแ: แจแแแแซแแแแ แแแแแแงแแแแ แแแคแแ แแแแแ โ
elgentos/regenerate-catalog-urls ยซ
แแ แแแฃแฅแขแแแ แแแแแแแกแขแ แแชแแฃแ แแแแแแจแ แแแแแขแแแแแ แแแฅแแแแแแแแแก แจแแกแ แฃแแแแแก แจแแแแแ:
แแ แฌแแ:
แ แแแแฃแแ
แแ แแแฃแฅแชแแแก แแแแแ แแแแ แแแ (10 แชแแแ), แ แแแแ แช แฌแแแ แกแขแแขแแแจแ, แแแแแ แขแแ แแแฃแแแ แแแแแแฃแ แกแแแแแแก แแ แซแแแแแแ แฃแคแ แ แกแฌแ แแคแแ (1 แฌแแแ 10-แแก แฌแแแแแฆแแแแ). แกแแฉแฅแแ แแก แฃแคแ แ แแฃแกแขแแ แจแแกแแคแแกแแแแแ, แกแแญแแ แแ แแ แแแฃแฅแขแแแแก แฃแคแ แ แแแแ แ แแแแแแแแ - แ แแแแแแแแ แแกแแฃแแ, แแ แฃแแแแแกแแ แแแแกแแแแ. แแฃแแชแ, แแฃแแแแช แแกแแแ แแชแแ แ แแแแแก แจแแงแแแแแก แแแแแชแแแแแแ, แจแแแแแซแแแ แแแแแกแแแแแ, แ แแ Magento-แก แแแแ แแแฌแแแแแฃแแ แฎแแแกแแฌแงแแแแแก แแแแแงแแแแแ (แแแแแแแแ แแ แกแแชแแแ) แแแแจแแแแแแแแแแ (แฎแแแก แแฃแกแแแ - แแแแ แ!) แแแแฉแฅแแ แแ แกแแญแแ แ แคแฃแแฅแชแแแแแ แแแแก แแแแแแแแ แแแ, แแแแ แแ แแแแแ แแ แแก แแแแจแแแแแแแแแ (แฎแแแก แแฃแกแแแ - แแแแ แ!) แจแแแแชแแ แแ แแแแแชแแแแ แแแแแจแ แแแฎแแแแ แแก แกแแฉแฅแแ แ.
แจแแแแแแ, แฌแงแแแ แกแแแแ แแฆแแแฉแแแ แแ แแก แแ แแ แแก แแแแแชแฎแแแแแ. แแฃแแชแ, แแฎแแ แแ แแแฅแแก แแแแ, แ แแ แแแแแแแจแ แแ, แแแแแ, แฃแคแ แ แกแแแแขแแ แแกแ แแแกแแแแแแแ แแแแแแ.
แฌแงแแ แ: www.habr.com