简单的问题我有一个集合Users和Users_Preferences。用户首选项被假定为用户的扩展。例如:
Users
--------------------------------
Id | Name
1 | Test
2 | Luis
3 | Lopes
Users_Preferences
--------------------------------
Id | User_ID | Color | TrackSystem | ReceiveNewsletter
1 | 1 | Green | after_seen | no
2 | 3 | Red | dont_track | yes
因为你可以看到我想创建一个关系但是在users_preferences上可能没有记录,因为我没有强迫人们选择他们的偏好既没有设置默认值。
我也希望从我的用户存储库和实体访问它。
# src/CrazyBundle/Controllers/WhateverController.php
/** @var UsersPreferences $userPreferences **/
$userPreferences = $this->getUser()->getPreferences();
$userPreferences->getColor()
// OR
$this->getUser()->getPreference("color")
对于使用Symfony的人来说,这应该是一个基本问题:)。请先做最好的练习。
由于
答案 0 :(得分:2)
我认为,用户和用户属性都是诱人的。
对于User实体,您可以使用OneToOne关系来设置首选项属性:
/**
* @ORM\OneToOne(targetEntity="UserPreferences")
* @ORM\JoinColumn(name="preference_id", referencedColumnName="id", nullable=true)
**/
protected $preference;
为它生成一个getter和一个setter。
在此之后,您可以从用户获取UserPreference实体:
$user->getPreference()->getColor()
或在TWIG:
{{ user.preference.color}}