Symfony:如何在我的实体之间建立良好的关系?

kuarbcqp  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(144)

我是Symfony的新用户,我想在两个实体之间建立关系。
我有一个实体名为“Suggest”,另一个名为“Car”
每个建议可以有一辆或多辆汽车,并且一辆车可以用于0个或多个建议
我希望在“建议”实体中有一个名为“汽车”的新字段(汽车名称字段),但不希望在“汽车”实体中有新字段
我该怎么做?
我试图在我的建议实体上创建一个关系ManyToOne,但它为我创建了一个汽车的id字段,我只能放置一个。
使用ManyToMany关系,是否可能在我“建议”实体上只获得一个新字段?

ttcibm8c

ttcibm8c1#

假设您使用的是make:entity命令:如果您将cars属性添加到您的Suggest实体,并使其成为CarManyToMany关系,它不会将额外的属性添加到Car类(您可以对该类说no):
Car

<?php

namespace App\Entity;

use App\Repository\CarRepository;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=CarRepository::class)
 */
class Car
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    public function getId(): ?int
    {
        return $this->id;
    }
}

以及Suggest

<?php

namespace App\Entity;

use App\Repository\SuggestRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass=SuggestRepository::class)
 */
class Suggest
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToMany(targetEntity=Car::class)
     */
    private $cars;

    public function __construct()
    {
        $this->cars = new ArrayCollection();
    }

    public function getId(): ?int
    {
        return $this->id;
    }

    /**
     * @return Collection<int, Car>
     */
    public function getCars(): Collection
    {
        return $this->cars;
    }

    public function addCar(Car $car): self
    {
        if (!$this->cars->contains($car)) {
            $this->cars[] = $car;
        }

        return $this;
    }

    public function removeCar(Car $car): self
    {
        $this->cars->removeElement($car);

        return $this;
    }
}

相关问题