Как я понял, у вас много кинотеатров в одном театре.Итак, вы добавили следующий код к вашей Theater
сущности:
// ...
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
// ...
/**
* @var ArrayCollection $cinemas
* @ORM\OneToMany(targetEntity="App\Entity\Theater", mappedBy="theater")
*/
public $cinemas;
// ...
/**
* Theater constructor.
*/
public function __construct()
{
$this->cinemas = new ArrayCollection();
}
// ...
/**
* @return array
*/
public function getCinemas(): array
{
return $this->cinemas->toArray()
}
/**
* @return Theater
*/
public function addCinema(Cinema $cinema): self
{
$this->cinemas->add($cinema);
return $this;
}
// ...
и следующий код к вашей Cinema
сущности:
// ...
use Doctrine\ORM\Mapping as ORM;
// ...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Theater", inversedBy="cinemas")
* @ORM\JoinColumn(name="theater_id", referencedColumnName="id", nullable=FALSE)
*/
private $theater;
// ...
Затем вы можете получить доступ к вашейcinemas
сущностей из Theater
сущности:
$theaterRepository = $this->getDoctrine()->getManager()->getRepository(Theater::class);
$theater = $theaterRepository->findBy(['id' => 1]);
$cinemas = $theater->getCinemas(); // array
/** @var Cinema $cinema */
foreach($cinemas as $cinema) {
// ...
}
Или добавьте новые Cinema
к вашей Theater
:
$theaterRepository = $this->getDoctrine()->getManager()->getRepository(Theater::class);
$theater = $theaterRepository->findBy(['id' => 1]);
$cinema = new Cinema();
// ...
$theater->addCinema($cinema)
// Persist, flush, e.t.c
О ArrayCollection
, которые вы можете прочитать here
И вы можете получить доступ к вашему Theater
объекту из любого Cinema
объекта:
$cinemaRepository = $this->getDoctrine()->getManager()->getRepository(Cinema::class);
$cinema = $cinemaRepository->findBy(['id' => 1]);
$theater = $cinema->getTheater(); // Theater object
Или добавить Theater
к вашему Cinema
:
$cinema = new Cinema();
$theater = new Theater();
// ...
$cinema->setTheater($theater);
// ...
// Persist, flush, e.t.c