Doctrine ORM - 如何映射 jsonb/yaml?

Dan*_*gen 9 yaml doctrine-orm

在我的项目中,我使用 Doctrine 学说 2.5.4/postgres 9.5。我正在尝试使用 yaml 添加一个 jsonb 字段:

fields:
  obj: json_array
Run Code Online (Sandbox Code Playgroud)

这将转换为 json(而不是 jsonb)。关于获取 json 或 jsonb 的规范说明:

如果列定义在 platformOptions 属性数组中包含 jsonb 选项并设置为 true,则选择此选项。

但是 platformOptions 似乎不起作用(试图将它添加到 obj 下面,在顶部......没有成功)。如何添加 jsonb 字段?

谢谢,丹

Evr*_*sen 7

这是由doctrine/dbal v2.6+ 支持的(它需要PHP 7.1)。所有你需要做的就是使用json_array和设置options={"jsonb"=true}我在学说/dbal v2.6.3上测试过这个

这是 PHP 格式的样子

/**
 * @ORM\Column(type="json_array",nullable=true,options={"jsonb"=true})
 */
private $details;
Run Code Online (Sandbox Code Playgroud)

并创建查询,例如(对于现有表格):

ALTER TABLE mytable ADD details JSONB NOT NULL;
Run Code Online (Sandbox Code Playgroud)

关于类型映射的更多细节可以在 Doctrine mapping matrix 中找到

  • @EvrenYurtesen 使用 `type="json", options={"jsonb": true}` (4认同)