Skip to content

Multiple inheritance mapped superclasses in different namespaces #11488

@cyrilverloop

Description

@cyrilverloop

Bug Report

Q A
BC Break yes/no
Version 2.19 => 3.2

Summary

Hi,

On a Symfony 7 app, you can not have multiple inheritance mapped superclasses in different namespaces.

May be related to : #11404

Current behavior

Generating the migrations with ./bin/console make:migration gives the error : Duplicate definition of column 'id' on entity 'App\Entity\Daughter' in a field or discriminator column mapping.

How to reproduce

<?php

declare(strict_types=1);

namespace App\SomewhereElse;

use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

#[ORM\MappedSuperclass()]
abstract class BaseEntity
{
    #[
        ORM\Id(),
        ORM\Column(type: Types::INTEGER),
        ORM\GeneratedValue(strategy: "AUTO")
    ]
    protected ?int $id;
}
<?php

declare(strict_types=1);

namespace App\Entity;

use Doctrine\DBAL\Types\Types;
use Doctrine\ORM\Mapping as ORM;

#[ORM\MappedSuperclass()]
abstract class BaseEntity
{
    #[
        ORM\Id(),
        ORM\Column(type: Types::INTEGER),
        ORM\GeneratedValue(strategy: "AUTO")
    ]
    protected ?int $id;
}
<?php

declare(strict_types=1);

namespace App\Entity;

use App\SomewhereElse\BaseEntity; // Comment this line to make the problem disappear.
use Doctrine\ORM\Mapping as ORM;

#[ORM\MappedSuperclass()]
abstract class Mother extends BaseEntity {}
<?php

declare(strict_types=1);

namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity()]
class Daughter extends Mother {}

If App\Entity\Mother extends App\SomewhereElse\BaseEntity, the error appears (report_fields_where_declared: true with ORM 2.x).
If App\Entity\Mother extends App\Entity\BaseEntity, it works.

Expected behavior

I would like to be able to extend mapped superclasses from libraries (other namespaces).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions