symfony 如何获取现有ENUM或SET字段的所有可能值

gg0vcinb  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(97)

我在Symfony4中使用了Doctrine。
如何在此基础上检索ENUM或SET列的所有可能值?

eit6fx6z

eit6fx6z1#

我在获取枚举值时遇到了同样的问题,只需将数据库从枚举更改为int即可

pes8fvy9

pes8fvy92#

首先,我建议您添加一个抽象层,而不是直接扩展Enum,即使没有必要。

class AppEnum extends Enum
{
    /**
     * @ORM\Column(type="string", nullable=true)
     */
    protected $value;

然后你只需要在它上面添加静态函数。

public static function choices()
{
    $values = [];

    foreach (static::toArray() as  $value) {
        $values[] = new static($value);
    }

    return $values;
}

示例:假设您有一个枚举。

class ExampleEnum extends AppEnum
{
    public const A = '1';
    public const B = '2';
    public const C = '3';

然后:

dump(ExampleEnum::choices());

将返回:

array:3 [
  0 => App\Gateway\Domain\Darva\CalculationElement {#15121
    #value: "1"
    -key: "A"
  }
  1 => App\Gateway\Domain\Darva\CalculationElement {#15065
    #value: "2"
    -key: "B"
  }
  2 => App\Gateway\Domain\Darva\CalculationElement {#15124
    #value: "3"
    -key: "C"
  }
]

老职位,但希望它会有所帮助。

相关问题