Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF3][Doctrine] Relacja ManyToMany i encja
Turson
post 7.03.2016, 22:14:27
Post #1





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


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

Ten post edytował Turson 7.03.2016, 22:14:54
Go to the top of the page
+Quote Post
ohm
post 7.03.2016, 22:53:05
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kpt_lucek
post 9.03.2016, 19:12:16
Post #3





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie wyszukasz w doctrine po tabeli relacyjnej M2M.


--------------------


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:59