我需要将具有单表继承的Doctrine Entity与DiscriminatorColumn和DiscriminatorMap从不同的值扩展到同一个子类。
目前我正试图这样做,但只是每个实体的最后一个值正在应用。我寻求其他方法来实现这一点,使用数组或集合,但我在Doctrine或Symphony文档中找不到任何内容。请参阅下面的注释代码:
use Doctrine\ORM\Mapping as ORM;
/**
* Classe abstrata para definição de um objeto produto
*
* @author Maycon Brito <maycon.brito@rede.bioextratus.rede>
* @package models/Doctrine/Entidades
* @subpackage Produtos
*
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="codigosubtipo", type="integer")
* @ORM\DiscriminatorMap({
* "3" = "ProdutoAcabado",
* "12" = "ProdutoMarketing",
* "34" = "ProdutoMarketing",
* "36" = "ProdutoEmbalagem",
* "46" = "ProdutoMarketing",
* "59" = "ProdutoEmbalagem",
* "60" = "ProdutoEmbalagem",
* "61" = "ProdutoEmbalagem",
* "62" = "ProdutoEmbalagem",
* "81" = "ProdutoEmbalagem",
* "82" = "ProdutoMarketing",
* "83" = "ProdutoMarketing",
* "84" = "ProdutoMarketing",
* "86" = "ProdutoMarketing",
* "87" = "ProdutoMarketing",
* "89" = "ProdutoMarketing",
* "90" = "ProdutoMarketing",
* "91" = "ProdutoMarketing",
* "92" = "ProdutoMarketing",
* "93" = "ProdutoMarketing",
* "94" = "ProdutoMarketing",
* "95" = "ProdutoMarketing",
* "96" = "ProdutoMarketing",
* "97" = "ProdutoMarketing",
* "98" = "ProdutoMarketing",
* "99" = "ProdutoMarketing",
* "100" = "ProdutoMarketing",
* "101" = "ProdutoMarketing",
* "102" = "ProdutoMarketing",
* "103" = "ProdutoEmbalagem",
* "104" = "ProdutoEmbalagem",
* "105" = "ProdutoAcabado",
* "107" = "ProdutoAcabado",
* "108" = "ProdutoEmbalagem",
* "109" = "ProdutoEmbalagem",
* "111" = "ProdutoEmbalagem",
* "112" = "ProdutoEmbalagem",
* "128" = "ProdutoEmbalagem",
* "123" = "ProdutoAcabado",
* "106" = "ProdutoMarketing",
* "110" = "ProdutoMarketing",
* "121" = "ProdutoMarketing",
* "125" = "ProdutoTerceirizado",
* "126" = "ProdutoMarketing",
* "127" = "ProdutoTerceirizado"
* })
* @ORM\Table(name="produtos", uniqueConstraints={@ORM\UniqueConstraint(name="id", columns={"id"})}, indexes={@ORM\Index(name="IDX_CodigoSubTipo", columns={"CodigoSubTipo"}), @ORM\Index(name="IDX_CodigoUnidade", columns={"CodigoUnidade"}), @ORM\Index(name="IDX_Volume", columns={"CodigoVolume"}), @ORM\Index(name="IDX_Classe", columns={"CodigoClasse"}), @ORM\Index(name="IDX_CompraAtivada", columns={"CompraAtivada"}), @ORM\Index(name="IDX_Linha", columns={"id_Linha"}), @ORM\Index(name="IDX_LinhaEnvase", columns={"id_LinhaEnvase"}), @ORM\Index(name="idx_Finalidade", columns={"Finalidade"}), @ORM\Index(name="IDX_CodigoProdutoRend", columns={"CodigoProdutoRend"})})
* @ORM\Entity
*/
abstract class Produto implements InterfaceProduto {
例如,当我寻找所有“ProdutoMarketing”实体时,结果只是“ProdutoMarketing”,“codigosubtipo”列的值为126.
另一种可能的解决方案:
discriminatorcolumn(codigosubtipo)是另一个表(subtipo)的外键。此表有一个不是id的列,但是您的值是确定上面继承的子类的确定。如果可以定义另一个表的列的内部联接的DiscrimnatorColumn,则该问题将得到解决。