Security 合并表用户会话登录
我完全使用实体用户登录。当我登录时,我可以通过Security.Context访问用户。我是否可以将另一个表,例如UserSettings添加到security.context?我必须在entity User.php中执行的操作 My entity User.php: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
<?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的任何内容,因此这两个表之间没有关系;我不给你答案的原因是,我想确定逻辑上不在代码中是否存在任何可能的关系,以便我准备一些代码示例来帮助你