Symfony:如何获取与 oneToMany 关系相关的所有用户帖子
Symfony : how to get all user posts related with oneToMany relation
我有两个与 oneToMany 关系相关的实体 User 和 Booking,当用户进行预订时,用户 ID 保存在预订的 user_id 列 table 中,我想在我的控制器检索所有用户的预订!
/**
* @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() 方法时,它 return 没有任何作用!
这里 $this->getUser return :
是做什么的
您可以使用
从树枝打印它
{% for booking in user.bookings %}
{{booking}}
{% endfor %}
或者使用 PHP:
将其检索到您的控制器中
foreach($user->getBookings() as $booking){
echo $booking->getYourField();
}
我找到了解决方案,我只是忘记将 fetch EAGER 添加到 User 和 Booking 之间的 OneToMany 关系中!
我有两个与 oneToMany 关系相关的实体 User 和 Booking,当用户进行预订时,用户 ID 保存在预订的 user_id 列 table 中,我想在我的控制器检索所有用户的预订!
/**
* @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() 方法时,它 return 没有任何作用!
这里 $this->getUser return :
是做什么的您可以使用
从树枝打印它{% for booking in user.bookings %}
{{booking}}
{% endfor %}
或者使用 PHP:
将其检索到您的控制器中foreach($user->getBookings() as $booking){
echo $booking->getYourField();
}
我找到了解决方案,我只是忘记将 fetch EAGER 添加到 User 和 Booking 之间的 OneToMany 关系中!