Ok de oplossing gevonden:
/**
* User
*
* @ORM\Table("users")
* @ORM\Entity
*/
class User extends UserEntity
{
...
/**
* @ORM\OneToOne
* (
* targetEntity="UserPreferences",
* cascade={"persist", "remove"},
* inversedBy="user"
* )
*/
protected $userPreferences;
}
/**
* @ORM\Table("user_preferences")
* @ORM\Entity
*/
class UserPreferences extends UserPreferencesEntity
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
protected $id;
/**
* @var int
*
* @ORM\OneToOne(targetEntity="User", mappedBy="id", cascade={"persist", "remove"})
*/
protected $user;
...
}
Allereerst moest ik mappedBy en inversedBy specificeren (wat ik al eerder heb geprobeerd, maar in de verkeerde richting - mappedBy aan de eigenaarskant, inversedBy aan de omgekeerde kant). Ik dacht ook dat de omgekeerde kant geen aparte id hoefde te hebben en ik probeerde ook de id van de eigenaarskant (User#id) als primaire sleutel voor deze te gebruiken.
- http://docs.doctrine-project. org/en/latest/reference/unitofwork-associations.html
- http://docs.doctrine-project. org/en/latest/reference/association-mapping.html