Symfony:如何从与 oneToMany 关系相关的实体中获取所有对象数据

我有与 oneToMany 关系相关的“汽车”和“预订”实体:


<?php


namespace App\Entity;

    

/**

 * @ORM\Entity(repositoryClass=CarRepository::class)

 * @UniqueEntity("registrationNumber")

 * @Vich\Uploadable

 */


class Car

{


    /**

     * @ORM\Id()

     * @ORM\GeneratedValue()

     * @ORM\Column(type="integer")

     */

    private $id;


    /**

     * @ORM\Column(type="string", length=255)

     * @Assert\Length(min=3, max=9)

     */

    private $registrationNumber;


    /**

     * @ORM\OneToMany(targetEntity=Booking::class, mappedBy="car")

     */

    private $bookings;


/**

     * @return Collection|Booking[]

     */

    public function getBookings(): Collection

    {

        return $this->bookings;

    }


}

public function book(Request $request, Car $car)

    {

        $booked_car = $car;

        $booking = new Booking();

        $booking->setCar($booked_car);

        $form = $this->createForm(BookingType::class, $booking);

        $form->handleRequest($request);


        if ($form->isSubmitted() && $form->isValid()){

            $booking = $form->getData();

            $this->em->persist($booking);

            $this->em->flush();

            $this->addFlash('success', 'Démande envoyée avec success');


            return $this->redirectToRoute('car.index');

        }

        $this->addFlash('error', 'une erreur dans le système');

        return $this->render('booking/book.html.twig',[

            'booking' => $booking,

            'form' => $form->createView()

        ]);

    }

当在twig或列出所有预订的索引页面中转储 $booking 变量时,预订对象中的每个汽车对象只有 id 字段,其他字段均为 null !我希望获得与预订相关的汽车对象的每个字段的完整数据,以在树枝视图中显示它!在方法书中,我获取了随请求发送的 id 变量,并将其放入 setCar 方法中,我是否应该创建一个查询来搜索 byId 并一一影响每个属性!

https://img1.sycdn.imooc.com/65aa1d2100014c1c04250445.jpg

翻过高山走不出你
浏览 78回答 1
1回答

眼眸繁星

这种关系默认是延迟加载的。因此,由于您没有调用汽车对象的任何 getter,因此您只显示了 id(因为它也存储在预订对象中)。但这仅在转储的上下文中,一旦您尝试使用汽车的 getter(getId 除外),它就会加载其余部分。如果您确实需要将整个汽车数据与预订数据一起加载,则可以fetch="EAGER"在 ManyToOne 关系中使用,但您需要一个有效的理由才能这样做。
打开App,查看更多内容
随时随地看视频慕课网APP