[英]Symfony $this->getUser() without doctrine associations (OneToMany)
在 Symfony 中,我們可以使用 $this->getUser() 獲取當前登錄的用戶數據,但我的問題是當我訪問此語句時,我獲取了所有與用戶相關的數據集。 它與另一個實體具有 OneToMany 關系,並且它有很多數據。
例子:
用戶實體
`
class User implements UserInterface
{
/**
* @var string
* @ORM\Id
* @ORM\Column(type="string", length=10)
*
*/
protected $id;
/**
* @var string
* @ORM\Column(type="string")
*/
protected $email;
/**
* @var array
* @ORM\Column(type="json")
*/
protected $roles;
/**
* One User has Many Posts.
* @ORM\OneToMany(targetEntity="App\Entity\Post", mappedBy="user", fetch="LAZY")
*
*
*/
private Collection $posts;
`
發布實體
`
class Post
{
/**
* @var string
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer", length=11)
*/
private $id;
/**
* Many posts have one user.
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="post", fetch="EXTRA_LAZY")
* @ORM\JoinColumn(name="userId", referencedColumnName="id")
*/
private $user;
`
我希望擺脫與用戶關聯的數據集或將關聯數據集限制為 limit 1。
提前感謝您的幫助。 :)
經過數小時的搜索找到了解決方案。
您將需要在實體 class 上添加 Symfony Serializer #Ignore 屬性。
例子
use Symfony\Component\Serializer\Annotation\Ignore;
class User implements UserInterface
{
/**
* @var string
*
*/
#[ORM\Id]
#[ORM\Column(type: 'string', length: 10)]
protected $id;
/**
* @var string
*/
#[ORM\Column(type: 'string')]
protected $email;
/**
* @var array
*/
#[ORM\Column(type: 'json')]
protected $roles;
/**
* @var Post
*/
#[ORM\OneToMany(targetEntity: 'App\Entity\Post', mappedBy: 'user', fetch: 'LAZY')]
#[Ignore]
private Collection $posts;
我希望這對某人有所幫助。 干杯!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.