Я действительно надеюсь, что кто-то может помочь мне с этим, потому что это сводит меня с ума, что-то, что должно быть настолько простым
Пример таблиц базы данных (ID - это основной столбец во всех таблицах)
Exhibitors
id | name | address_line_1
3 | Test Name | Test 123 Street
4 | Test Name 2 | Test 123 Street 1
5 | Test Name 3 | Test 123 Street 2
6 | Test Name 4 | Test 123 Street 2
Shows
id | name | location
7 | The Greatest Show | USA
8 | Super Show | London, UK
9 | A Great Show | Toronto, CA
10 | Fab Show | NEC, Birmingham, UK
Links
id | show_id | exhibitor_id | agent_id | type
1 | 7 | 3 | null | 1
1 | 7 | 5 | null | 1
1 | 8 | 3 | null | 1
1 | 10 | 6 | null | 1
Теперь ссылка, которую я пытаюсь сделать, является многоканальной, поэтому, по сути, каждая выставка может иметь несколько экспонентов, и наоборот, каждый участник может быть назначен на несколько шоу.Текущие сущности создают целую новую таблицу с именем ppShowExhibLinks, которую я не очень хочу, но я действительно застрял ...
Таблица ссылок будет содержать ссылки различного рода, следовательно, тип и agent_id, так что как-то япытаюсь заставить отношения сделать что-то вроде:
$ show = new Show ();$ show-> getExhibitors ();
Затем выполняется что-то вроде «Получить все ссылки, где show_id - текущее шоу, а тип - 1»
Затем обратное
$show = новый экспонент ();$ Шоу-> getShows ();Затем он делает что-то вроде «Получить все ссылки, где экспонент является текущим экспонентом, а тип равен 1»
PS: я знаю, что новый экземпляр объекта не будет иметь никаких ссылок на экспонаты / шоу, а только для демонстрации объекта.
Entities
/**
* @ORM\Table(name="ppShows")
* @ORM\Entity(repositoryClass="App\Repository\ShowRepository")
*/
class Show
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
protected $name;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
protected $location;
/**
* @var \Doctrine\Common\Collections\Collection|Exhibitor[]
*
* @ORM\ManyToMany(targetEntity="Exhibitor", inversedBy="shows")
* @ORM\JoinTable(
* name="ppShowExhibLinks",
* joinColumns={
* @ORM\JoinColumn(name="show_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="exhibitor_id", referencedColumnName="id")
* }
* )
*/
protected $exhibitors;
********************************************
class Exhibitor
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
protected $name;
/**
* @ORM\Column(type="string", length=255, nullable=false)
*/
protected $address_line_1;
/**
* @var \Doctrine\Common\Collections\Collection|Show[]
*
* @ORM\ManyToMany(targetEntity="Show", inversedBy="exhibitors")
* @ORM\JoinTable(
* name="ppShowExhibLinks",
* joinColumns={
* @ORM\JoinColumn(name="show_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="exhibitor_id", referencedColumnName="id")
* }
* )
*/
protected $shows;
class Link
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer", options={"default" : 0}, nullable=true)
*/
protected $show_id;
/**
* @ORM\Column(type="integer", options={"default" : 0}, nullable=true)
*/
protected $exhibitor_id;
/**
* @ORM\Column(type="integer", options={"default" : 0}, nullable=true)
*/
protected $agent_id;
/**
* @ORM\Column(type="integer", options={"default" : 1}, nullable=false)
*/
protected $type;