原则ManyToOne on Delete SetNull

时间:2019-09-24 14:46:49

标签: sql symfony doctrine-orm

我有2个表,一个是产品,一个产品只能有一个品牌的c,但是有多个产品可以具有相同的品牌。

当我删除品牌时,我尝试在“产品”的brand_id字段上设置onDelete =“ Null”,但这不起作用:S

这是产品

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Brand")
     * @ORM\JoinColumn(name="brand_id", referencedColumnName="id", onDelete="SET NULL")
     */
    private $brand;

这是品牌

     * @ORM\OneToMany(targetEntity="App\Entity\Product", mappedBy="brand")
     * 
     */
    private $productTypes;

这是我从dump-sql中得到的:

    CREATE UNIQUE INDEX UNIQ_29D6873E84D1E8E7 ON offer (product_cat_id);
     ALTER TABLE sym_order DROP FOREIGN KEY FK_B88A9287E7A1254A;
     ALTER TABLE sym_order ADD CONSTRAINT FK_B88A9287E7A1254A FOREIGN KEY (contact_id) REFERENCES sym_contact (id);
     ALTER TABLE sym_product_type DROP FOREIGN KEY FK_5052FAC44F5D008;
     ALTER TABLE sym_product_type DROP FOREIGN KEY FK_5052FAC44F5D008;
     ALTER TABLE sym_product_type ADD CONSTRAINT FK_5052FAC44F5D008 FOREIGN KEY (brand_id) REFERENCES brand (id) ON DELETE SET NULL;
     DROP INDEX uniq_5052fac44f5d008 ON sym_product_type;
     CREATE INDEX IDX_5052FAC44F5D008 ON sym_product_type (brand_id);
     ALTER TABLE sym_product_type ADD CONSTRAINT FK_5052FAC44F5D008 FOREIGN KEY (brand_id) REFERENCES brand (id);
     ALTER TABLE sym_stock DROP FOREIGN KEY FK_695577F14959723;
     ALTER TABLE sym_stock CHANGE status status TINYINT(1) NOT NULL;
     ALTER TABLE sym_stock ADD CONSTRAINT FK_695577F14959723 FOREIGN KEY (product_type_id) REFERENCES sym_product_type (id) ON DELETE SET NULL;

还请注意,当我尝试更新--force时出现错误,但我想它仍然可以执行其余的操作?

感谢您的帮助;)

1 个答案:

答案 0 :(得分:0)

如果执行时发生错误

php bin/console doctrine:schema:update --force

在上一个成功的命令上执行停止。这可能是您的问题,因为注释似乎定义正确。

您可以使用以下命令检查未执行的命令:

php bin/console doctrine:schema:update --dump-sql

如果每个SQL命令都正确执行,则该命令会通知您您的架构是最新的。