我正在尝试在 postgres DB 中使用整数数组数据类型,使用 Doctrine 2 作为 ORM。最初,我在 Symfony 中将表单字段创建为实体类型,并假设实体是此错误的根源:
request.CRITICAL: Doctrine\DBAL\DBALException: An exception occurred while executing 'INSERT INTO actions (bundle_key, name, type, num_installs, countries, enabled) VALUES (?, ?, ?, ?, ?, ?)' with params ["05e4a7e5", "sfsdfdsfs", "1", "3", "O:43:\"Doctrine\\Common\\Collections\\ArrayCollection\":1:{s:54:\"\u0000Doctrine\\Common\\Collections\\ArrayCollection\u0000_elements\";a:3:{i:0;O:39:\"... truncated for SO question ...Bundle\\Entity\\Country\u0000latitude\";s:5:\"18.25\";s:50:\"\u0000AirInstaller\\AdminBundle\\Entity\\Country\u0000longitude\";s:8:\"-63.1667\";}}}", "true"]:
SQLSTATE[22P02]: Invalid text representation: 7 ERROR: array value must start with "{" or dimension information (uncaught exception) at /Users/steveadams/Sites/airinstaller/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php line 47 [] []
在看到疯狂的序列化过程后,我决定尝试通过构建一个选择字段来将国家/地区存储为他们的 id,这样该字段就不会被解释为一个实体。这也失败了。然后我决定检查文档,我发现在教义中的数组支持实际上只是一个 php 数组的序列化字符串!如果我的列类型实际上是数据库中的数组,这根本不起作用。
所以我的难题是:我是否创建一个自定义映射类型,以适当的格式存储这些国家/地区以用于 postgres 整数 []:{2,13,26,43}
或者我是否要求我的数据库管理员将列更改为字符并存储 Doctrine 想要使用的序列化数组?好像太脏了
无论哪种情况,我都很失望。我想我做错了什么,因为这里的底线是 Doctrine 不支持开箱即用的 integer[]。真的是这样吗?
感谢您的任何意见!