我在Symfony4中使用了Doctrine。如何在此基础上检索ENUM或SET列的所有可能值?
eit6fx6z1#
我在获取枚举值时遇到了同样的问题,只需将数据库从枚举更改为int即可
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" } ]
老职位,但希望它会有所帮助。
2条答案
按热度按时间eit6fx6z1#
我在获取枚举值时遇到了同样的问题,只需将数据库从枚举更改为int即可
pes8fvy92#
首先,我建议您添加一个抽象层,而不是直接扩展Enum,即使没有必要。
然后你只需要在它上面添加静态函数。
示例:假设您有一个枚举。
然后:
将返回:
老职位,但希望它会有所帮助。