我是Symfony的新用户,我想在两个实体之间建立关系。
我有一个名为"建议"的实体,另一个是"汽车">
每个建议可以有一辆或多辆车,并且一辆车可以用于0或多辆建议
我希望在我的"建议"实体中有一个名为"汽车"的新字段(汽车名称字段(,但我不希望在"汽车"实体中有新字段
我该怎么做?
我试图在我的Suggest实体上建立一个关系ManyToOne,但它为我创建了一个汽车id字段,我只能放一个。
对于ManyToMany关系,是否可能只在我的"建议"实体上获得一个新字段?
假设您使用的是make:entity
命令:如果您将cars
属性添加到Suggest
实体,并使其成为Car
的ManyToMany
关系,则它不会向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;
}
}