The Pehapkari.cz blog has continued their series covering domain-driven design with the latest post in the series showing some alternative relational database mapping techniques.
Do you think that multilingual text must always be in a separate database table? Than this article is for you!
We will show that not all arrays have to be mapped as database tables. And we will also show the Doctrine implementation.
The article starts with a bit of background on what they're trying to accomplish: adding internationalization functionality to an e-commerce application. In order to make it simpler to work with the multi-language requirements they show the abstraction of its handling out into a
LangValue value object that's used to store the product name value for each language. They then use this and some JSON encoded data to store the different language strings in the database directly with the product record rather than a different table. It then shows how to create the matching Doctrine entity for the
LangValueType to work with the serialized column data and extract data from it's JSON blob.