Lets say we have entities which are named Element, those MAY belong to a entity called Layout. Elements and Layouts have a ManyToOne relation, where Many Elements belong to one Layout.
The databas engine used is MySQL, additionally we use a unique key, which the layout_id is a part of. So therefore we have in the Elements table, a column called layout_id which can not be null (because of the composite unique key), and has a default of 0. The value of 0 is a magic value and treated as 'No Layout assigned' throughout the code base (there are no FK's between Element and Layout because of this).
The problem with Doctrine ORM is that it tries to load a Layout with a ID of 0, which it can not find because it does not exists. We can not create a Layout entry with ID 0 because Layouts have other foreign keys and there own other constraints.
Is there any suggestion on how to overcome this. Basically when the layout_id in the Element is 0, we would like not to load a Layout.
In such case you cannot set this
layout_idas part of the composite key. This is because of the foreign key constraint. Either yourlayout_idhas to benullable(meaning it cannot be part of the composite key) or you have to make a row in yourlayouttable with id 0 (so it can be used as an identifier).A solution could be to not use a composite key but instead add a primary key column for uniquely identifying your entity (surrogate key).