【问题标题】:Symfony : how to get all user posts related with oneToMany relationSymfony:如何获取与 oneToMany 关系相关的所有用户帖子
【发布时间】:2020-09-16 08:12:07
【问题描述】:

我有两个实体 User 和 Booking 与 oneToMany 关系相关,当用户进行预订时,用户 id 保存在预订的 user_id 列表中,我希望在我的控制器中检索所有用户的预订!

/**
 * @ORM\ManyToOne(targetEntity=User::class, inversedBy="bookings")
 * @JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;

    public function setUser(?User $user): self
    {
        $this->user = $user;

        return $this;
    }

/**
     * @ORM\OneToMany(targetEntity=Booking::class, mappedBy="user")
     */
    private $bookings;

/**
     * @return Collection|Booking[]
     */
    public function getBookings(): Collection
    {
        return $this->bookings;
    }

    public function addBooking(Booking $booking): self
    {
        if (!$this->bookings->contains($booking)) {
            $this->bookings[] = $booking;
            $booking->setUser($this);
        }

        return $this;
    }

/**
     * @Route("/user/profile/my-bookings", name="user.profile.bookings")
     */

    public function getUserBookings(){
        $user = $this->getUser()->getBookings();

        return $this->render('user/user.bookings.html.twig', [
            'user'=>$user
        ]);
    }

当尝试获取连接的用户并调用 getBookings() 方法时,它不会返回任何东西!

这里 $this->getUser 返回什么:

【问题讨论】:

  • $this->getUser() 返回什么?
  • 问题更新见附图

标签: php symfony authentication twig one-to-many


【解决方案1】:

您可以使用 twig 打印它

{% for booking in user.bookings %}
    {{booking}}
{% endfor %}

或者使用 PHP 将其检索到您的控制器中:

foreach($user->getBookings() as $booking){
    echo $booking->getYourField();
}

【讨论】:

  • 这不起作用,它不知道 getBookings 方法和 phpstorm 显示此消息:“潜在的多态调用。用户在其层次结构中没有成员”
  • 嗯...这很正常,因为您将 $this->getUser()->getBookings() 分配给变量 user 而不是真正的用户
  • @DarkBee 你能解释更多吗?真正的用户是登录用户不是吗!
  • 您正在使用 getBookings() 数据渲染您的“用户”变量,如果您使用 $this->getUser() 渲染“用户”,然后使用 user.bookings 访问 Twig 中的预订,该怎么办?跨度>
  • 我试过了,找不到预订的字段或方法!!
【解决方案2】:

我找到了解决方案,我只是忘记将 fetch EAGER 添加到 User 和 Booking 之间的 OneToMany 关系中!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多