在Symfony中,我们可以使用$this->getUser()获得当前登录的用户数据,但我的问题是,当我访问此语句时,我获得了所有与用户相关的数据集。它与另一个实体有一多关系,它有很多数据。
的例子:用户实体
class User implements UserInterface
{
/**
* @var string
* @ORMId
* @ORMColumn(type="string", length=10)
*
*/
protected $id;
/**
* @var string
* @ORMColumn(type="string")
*/
protected $email;
/**
* @var array
* @ORMColumn(type="json")
*/
protected $roles;
/**
* One User has Many Posts.
* @ORMOneToMany(targetEntity="AppEntityPost", mappedBy="user", fetch="LAZY")
*
*
*/
private Collection $posts;
Post实体
class Post
{
/**
* @var string
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
* @ORMColumn(type="integer", length=11)
*/
private $id;
/**
* Many posts have one user.
* @ORMManyToOne(targetEntity="AppEntityUser", inversedBy="post", fetch="EXTRA_LAZY")
* @ORMJoinColumn(name="userId", referencedColumnName="id")
*/
private $user;
我正在寻找摆脱用户相关的数据集或限制相关的数据集限制1。
提前感谢您的帮助。:)
经过数小时的搜索,找到了解决方案。
你需要在实体类上添加Symfony Serializer #Ignore属性。
例子use SymfonyComponentSerializerAnnotationIgnore;
class User implements UserInterface
{
/**
* @var string
*
*/
#[ORMId]
#[ORMColumn(type: 'string', length: 10)]
protected $id;
/**
* @var string
*/
#[ORMColumn(type: 'string')]
protected $email;
/**
* @var array
*/
#[ORMColumn(type: 'json')]
protected $roles;
/**
* @var Post
*/
#[ORMOneToMany(targetEntity: 'AppEntityPost', mappedBy: 'user', fetch: 'LAZY')]
#[Ignore]
private Collection $posts;
我希望这对某人有所帮助。干杯!