【问题标题】:Symfony2 and Doctrine - Adding a property doesn't inherit parent associative properties in custom bundleSymfony2 和 Doctrine - 添加属性不会继承自定义包中的父关联属性
【发布时间】:2023-03-06 16:51:01
【问题描述】:

我正在尝试在第三方捆绑包中的实体中添加属性。这是我的 yml 文件

Acme\Bundle\AppBundle\Entity\Group:
type: entity
table: pim_catalog_group_new
changeTrackingPolicy: DEFERRED_EXPLICIT 
fields:
    sortOrder:
        type: integer        
manyToOne:
    family:
        targetEntity: Pim\Component\Catalog\Model\FamilyInterface
        joinColumn:
            name: family_id
            referencedColumnName: id
            onDelete: 'SET NULL'

当我运行以下命令时

php app/console doctrine:migrations:diff

它给了我id, family_id, sortOrder, code 和其他简单字段,但不包括来自父类的关联字段。这是生成的迁移脚本(请注意,缺少父级的 oneToMany、manyToMany 关联字段):

    public function up(Schema $schema)
{
    // this up() migration is auto-generated, please modify it to your needs
    $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'mysql', 'Migration can only be executed safely on \'mysql\'.');

    $this->addSql('CREATE TABLE pim_catalog_group (id INT AUTO_INCREMENT NOT NULL, family_id INT DEFAULT NULL, code VARCHAR(100) NOT NULL, sortOrder INT NOT NULL, UNIQUE INDEX UNIQ_3196D4CB77153098 (code), INDEX IDX_3196D4CBC35E566A (family_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB');
    $this->addSql('ALTER TABLE pim_catalog_group ADD CONSTRAINT FK_3196D4CBC35E566A FOREIGN KEY (family_id) REFERENCES pim_catalog_family (id) ON DELETE SET NULL');
    $this->addSql('ALTER TABLE pim_catalog_group_translation DROP FOREIGN KEY FK_622D98DB7E366551');
    $this->addSql('ALTER TABLE pim_catalog_group_translation ADD CONSTRAINT FK_622D98DB7E366551 FOREIGN KEY (foreign_key) REFERENCES pim_catalog_group (id) ON DELETE CASCADE');
    $this->addSql('ALTER TABLE pim_catalog_association_group DROP FOREIGN KEY FK_E91414DDFE54D947');
    $this->addSql('ALTER TABLE pim_catalog_association_group ADD CONSTRAINT FK_E91414DDFE54D947 FOREIGN KEY (group_id) REFERENCES pim_catalog_group (id) ON DELETE CASCADE');
    $this->addSql('ALTER TABLE pim_catalog_group_product DROP FOREIGN KEY FK_7AC0C83AFE54D947');
    $this->addSql('ALTER TABLE pim_catalog_group_product ADD CONSTRAINT FK_7AC0C83AFE54D947 FOREIGN KEY (group_id) REFERENCES pim_catalog_group (id) ON DELETE CASCADE');
}

【问题讨论】:

标签: symfony doctrine akeneo


【解决方案1】:

根据@Rvanlaak 的建议:

只要没有使用超类或相关的映射,PHP 继承就不会在 Doctrine 中起作用。尤其是一旦配置格式(yml、注释、xml)混合在一起,这将很困难,所以最简单的是覆盖整个实体。另见:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/inheritance-mapping.html

我最终通过将整个 orm 文件复制到我的自定义包中并对其进行修改以添加我的自定义字段和关联来解决此问题。

【讨论】:

  • 嗨,正确的购买 Akeneo 有一个系统,可以让您在不复制整个文件的情况下进行操作。如果您愿意,您甚至可以继续使用默认表。查看他们的文档以在此处为产品执行此操作:docs.akeneo.com/latest/cookbook/catalog_structure/… 分组应该完全相同。
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 2011-06-25
  • 2011-01-31
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
相关资源
最近更新 更多