Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF3][Doctrine] Relacja ManyToMany i encja
Forum PHP.pl > Forum > PHP > Frameworki
Turson
Mam sobie encję Job
  1. class Job
  2. {
  3.  
  4. /**
  5.   * @ORM\Column(type="integer")
  6.   * @ORM\Id
  7.   * @ORM\GeneratedValue(strategy="AUTO")
  8.   */
  9. protected $id;
  10.  
  11. /**
  12.   * @var \Doctrine\Common\Collections\Collection|JobContract[]
  13.   *
  14.   * @ORM\ManyToMany(targetEntity="Contract", inversedBy="job_id")
  15.   * @ORM\JoinColumn(name="job_id", referencedColumnName="job_id")
  16.   */
  17. protected $contracts;

Encja Contract także istnieje.
Taka relacja tworzy mi dodatkową tabelę job_contract z kolumnami job_id i contract_id.
Wygląda ok.
Problem zaczyna się kiedy chcę po tej tabeli czegoś wyszukać. Robię w repozytorium Job złączenie po job_id i siłą rzeczy muszę wskazać encję, do której to się odnosi. Na razie jeszcze żadna nie istnieje. Robię więc encję JobContract
  1. /**
  2.  * @ORM\Entity
  3.  * @ORM\Table(name="job_contract")
  4.  */
  5. class JobContract
  6. {
  7.  
  8.  
  9. /**
  10.   * @var int
  11.   * @ORM\Id
  12.   * @ORM\Column(name="job_id", type="integer")
  13.   */
  14. protected $jobId;
  15.  
  16. /**
  17.   * @var int
  18.   * @ORM\Id
  19.   * @ORM\Column(name="contract_id", type="integer")
  20.   */
  21. protected $contractId;


I w tym momencie wywołanie update'u bazy przez konsolę kończy się niepowodzeniem: table job_contracts already exists
Jak mam to zrobić skoro raz krzyczy, że potrzebuje encji a jak już ją ma, to że tabela istnieje
ohm
Jeśli chcesz utworzyć encję łączącą do której chcesz mieć dostęp, to musisz w JobContract zrobić 2x ManyToOne to Job i do Contract, a w Job i Contract zrobić OneToMany.

Cytat
Problem zaczyna się kiedy chcę po tej tabeli czegoś wyszukać.

Możesz jaśniej?

Btw, doctrine:schema:validate pewnie rzuca błędami? wink.gif
kpt_lucek
Nie wyszukasz w doctrine po tabeli relacyjnej M2M.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.