我想在postgres數據庫中使用整數數組數據類型,使用Doctrine 2作爲ORM。起初,我創建表單字段作爲Symfony的實體類型並且假設實體被這個錯誤的根源:Postgres數組處理在Doctrine 2,Symfony 2.2
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不支持開箱即用的整數[]。這是真的嗎?
感謝您的任何意見!
這不是一個正常的「教條」。通常,您將創建一個國家/地區實體,然後使用外鍵保持關聯。很可能,你會使用多對多的關係來表現你在上面做的事情。數組方法有點像扁平數據庫。如果您的數據模型無法重新加工,您可以通過構建字符串來構建查詢。 – Lighthart