簡體   English   中英

Symfony $this->getUser() 沒有 doctrine 關聯 (OneToMany)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM