Security 合并表用户会话登录

Security 合并表用户会话登录,security,session,symfony,entity,Security,Session,Symfony,Entity,我完全使用实体用户登录。当我登录时,我可以通过Security.Context访问用户。我是否可以将另一个表,例如UserSettings添加到security.context?我必须在entity User.php中执行的操作 My entity User.php: <?php namespace Frontend\AccountBundle\Entity; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Security

我完全使用实体用户登录。当我登录时,我可以通过Security.Context访问用户。我是否可以将另一个表,例如UserSettings添加到security.context?我必须在entity User.php中执行的操作

My entity User.php:

<?php

namespace Frontend\AccountBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\Exception\DisabledException;

/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity
* @UniqueEntity("email")
*/
class User implements AdvancedUserInterface, \Serializable {
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;
...
public function getId()
{
    return $this->id;
}
...
My UserSettings.php:

<?php

namespace Frontend\AccountBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* UserSettings
*
* @ORM\Table(name="user_settings")
* @ORM\Entity
*/
class UserSettings
{
/**
 * @var \Language
 *
 * @ORM\ManyToOne(targetEntity="Language")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="locale", referencedColumnName="id")
 * })
 */
private $locale;

/**
 * @var \User
 *
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="NONE")
 * @ORM\OneToOne(targetEntity="User")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="id", referencedColumnName="id")
 * })
 */
private $id;



/**
 * Set locale
 *
 * @param \Frontend\AccountBundle\Entity\Language $locale
 * @return UserSettings
 */
public function setLocale(\Frontend\AccountBundle\Entity\Language $locale = null)
{
    $this->locale = $locale;

    return $this;
}

/**
 * Get locale
 *
 * @return \Frontend\AccountBundle\Entity\Language 
 */
public function getLocale()
{
    return $this->locale;
}

/**
 * Set id
 *
 * @param \Frontend\AccountBundle\Entity\User $id
 * @return UserSettings
 */
public function setId(\Frontend\AccountBundle\Entity\User $id)
{
    $this->id = $id;

    return $this;
}

/**
 * Get id
 *
 * @return \Frontend\AccountBundle\Entity\User 
 */
public function getId()
{
    return $this->id;
}
}

你可以把这两张表联系起来,这两张表似乎是一对一的关系;虽然当您从security.context获取用户对象时,您将能够获取该用户的设置,但我如何获取它?…->getUser->getUserSettings。。。没有。我在entity User.php中没有关于entity UserSettings.php的任何内容,因此这两个表之间没有关系;我不给你答案的原因是,我想确定逻辑上不在代码中是否存在任何可能的关系,以便我准备一些代码示例来帮助你