Map a discriminator column to a field with Doctrine 2

前端 未结 4 1780
慢半拍i
慢半拍i 2020-12-09 05:41

In my project I have several class table inheritances like this:

namespace MyProject\\Model;

/**
 * @Entity
 * @InheritanceType(\"JOINED\")
 * @Discriminat         


        
4条回答
  •  不思量自难忘°
    2020-12-09 06:25

    Just got this problem and solved it without defining the discriminator as a real member:

    abstract class MyEntity {
        const TYPE_FOO = 'foo';
        const TYPE_BAR = 'bar';
        const TYPE_BUZ = 'buz';
        ...
        /**
         * @return string
         */
        public function getMyDiscriminator()
        {
            $myDiscriminator = null;
            switch (get_class($this)) {
                case MyEntityFoo::class:
                    $myDiscriminator = self::TYPE_FOO;
                    break;
                case MyEntityBar::class:
                    $myDiscriminator = self::TYPE_BAR;
                    break;
                case MyEntityBuz::class:
                    $myDiscriminator = self::TYPE_BUZ;
                    break;
            }
            return $myDiscriminator;
        }
        ...
    }
    
    class MyEntityFoo extends MyEntity {}
    
    class MyEntityBar extends MyEntity {}
    
    class MyEntityBuz extends MyEntity {}
    

提交回复
热议问题