Symfony:如何构建我的实体之间的良好关系



我是Symfony的新用户,我想在两个实体之间建立关系。

我有一个名为"建议"的实体,另一个是"汽车">

每个建议可以有一辆或多辆车,并且一辆车可以用于0或多辆建议

我希望在我的"建议"实体中有一个名为"汽车"的新字段(汽车名称字段(,但我不希望在"汽车"实体中有新字段

我该怎么做?

我试图在我的Suggest实体上建立一个关系ManyToOne,但它为我创建了一个汽车id字段,我只能放一个。

对于ManyToMany关系,是否可能只在我的"建议"实体上获得一个新字段?

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

Car:

<?php
namespace AppEntity;
use AppRepositoryCarRepository;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity(repositoryClass=CarRepository::class)
*/
class Car
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
*/
private $id;
public function getId(): ?int
{
return $this->id;
}
}

Suggest:

<?php
namespace AppEntity;
use AppRepositorySuggestRepository;
use DoctrineCommonCollectionsArrayCollection;
use DoctrineCommonCollectionsCollection;
use DoctrineORMMapping as ORM;
/**
* @ORMEntity(repositoryClass=SuggestRepository::class)
*/
class Suggest
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
*/
private $id;
/**
* @ORMManyToMany(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;
}
}

最新更新