Учить разные значения DiscriminatorMap для одного и того же подкласса

Мне нужно расширить сущность Doctrine с наследованием одной таблицы с помощью DiscriminatorColumn и DiscriminatorMap от разных значений до одного и того же подкласса.

На данный момент я пытаюсь сделать это таким образом, но только последнее значение каждой сущности применяется. Я искал другие способы сделать это с массивами или коллекциями, но ничего не нашел в Doctrine или Symphony Documentation. Смотрите код аннотации ниже:

use Doctrine\ORM\Mapping as ORM;

/**
* Classe abstrata para definição de um objeto produto
*
* @author Maycon Brito <[email protected]>
* @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.


Другое возможное решение:

Дискриминаторный столбец (codigosubtipo) является внешним ключом другой таблицы (subtipo). В этой таблице есть столбец, который не является идентификатором, но ваши значения являются определенными для определения унаследованного подкласса выше. Если было возможно определить DiscrimnatorColumn внутреннего соединения столбца другой таблицы, эта проблема будет решена.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]