Magento 2: Как Создать УНИКАЛЬНОЕ КЛЮЧЕВОЕ поле в Пользовательской таблице
Я хочу создать пользовательский файл, скажем myname
с УНИКАЛЬНЫМ КЛЮЧОМ ограничений в пользовательской таблице расширений.
В Magento1 мы можем определить так:
UNIQUE KEY `myname` (`myname`)
Как я могу сделать это в Magento2?
5
Author: Dhiren Vasoya, 2017-02-20
2 answers
Вы можете использовать тип индекса как \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE
Чтобы добавить уникальный ключ, используйте код
->addIndex(
$installer->getIdxName(
'YOUR_TABLE_NAME',
['YOUR_UNIQUE_FIELD_NAME'],
\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE
),
['YOUR_UNIQUE_FIELD_NAME'],
['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE]
)
Вы можете добавить комбинацию нескольких столбцов как UNIQUE
с,
->addIndex(
$installer->getIdxName(
'catalog_product_entity_datetime',
['entity_id', 'attribute_id', 'store_id'],
\Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE
),
['entity_id', 'attribute_id', 'store_id'],
['type' => \Magento\Framework\DB\Adapter\AdapterInterface::INDEX_TYPE_UNIQUE]
)
См. vendor\magento\module-catalog\Setup\InstallSchema.php
21
Author: Jaimin Sutariya, 2017-02-20 06:22:40
В Magento 2.3 мы можем создать уникальный ключ, используя декларативную схему.
<?xml version="1.0"?>
<schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:Setup/Declaration/Schema/etc/schema.xsd">
<table name="student" resource="default" engine="innodb" comment="Student Table">
<column xsi:type="smallint" name="student_id" padding="6" unsigned="false" nullable="false" identity="true" comment="Student Id"/>
<column xsi:type="varchar" name="roll_number" nullable="false" length="255" comment="Roll Number"/>
<column xsi:type="varchar" name="student_name" nullable="true" comment="Student Name"/>
<constraint xsi:type="primary" referenceId="PRIMARY">
<column name="student_id"/>
</constraint>
<constraint xsi:type="unique" referenceId="STUDENT_ROLL_NUMBER">
<column name="roll_number"/>
</constraint>
</table>
</schema>
Для получения более подробной информации см. https://devdocs.magento.com/guides/v2.4/extension-dev-guide/declarative-schema/db-schema.html
1
Author: Pandurang, 2020-11-19 16:06:18