我正在做一個使用 Sylius 的專案。我必須覆寫與ChannelPricing物體相關的默認約束。
這是原始約束宣告:原始檔案的鏈接:
https : //github.com/Sylius/Sylius/blob/v1.10.7/src/Sylius/Bundle/CoreBundle/Resources/config/doctrine/model/ChannelPricing。格式檔案
<mapped-superclass name="Sylius\Component\Core\Model\ChannelPricing" table="sylius_channel_pricing">
<unique-constraints>
<unique-constraint columns="product_variant_id,channel_code" name="product_variant_channel_idx" />
</unique-constraints>
</mapped-superclass>
當我@UniqueEntity在擴展物體類上使用注釋時,我能夠使用我的新約束創建遷移:
/**
* @ORM\Entity
* @ORM\Table(
* name="sylius_channel_pricing",
* uniqueConstraints={@UniqueConstraint(
* name="product_variant_channel_customer_group_idx",
* columns={"product_variant_id", "channel_code", "customerGroup_id"})},
* )
*/
class ChannelPricing extends BaseChannelPricing
但是......這些行只生成一個遷移來建立的約束product_variant_channel_customer_group_idx。我想告訴學說,我要洗掉默認的約束product_variant_channel_idx第一
uj5u.com熱心網友回復:
我的錯誤是為約束定義了一個新名稱。如果我使用原件,Doctrine 明白我想要覆寫并生成放置指令。
因此,對于這些注釋:
/**
* @ORM\Entity
* @ORM\Table(
* name="sylius_channel_pricing",
* uniqueConstraints={@UniqueConstraint(
* name="product_variant_channel_idx",
* columns={"product_variant_id", "channel_code", "customerGroup_id"})},
* )
*/
class ChannelPricing extends BaseChannelPricing
{
生成的遷移:
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('DROP INDEX product_variant_channel_idx ON sylius_channel_pricing');
$this->addSql('CREATE UNIQUE INDEX product_variant_channel_idx ON sylius_channel_pricing (product_variant_id, channel_code, customerGroup_id)');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/398317.html
