Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Doctrine] Relacja m2m z dodatkowymi parametrami
seth-kk
post
Post #1





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Witam
Czy w Doctrine da się na poziomie YAML stworzyć relację many 2 many z dodatkowy parametrem?
Przykład
  1. Tag:
  2. tableName: tags
  3. COLUMNS:
  4. id:
  5. type: integer
  6. PRIMARY: true
  7.  
  8. TagsReferences:
  9. tableName: tags_references
  10. COLUMNS:
  11. tag_id:
  12. type: integer
  13. PRIMARY: true
  14. table_name:
  15. type: string(50)
  16. PRIMARY: true
  17. table_id:
  18. type: integer
  19. PRIMARY: true
  20.  
  21. SomeTable:
  22. tableName: some_table
  23. COLUMNS:
  24. id:
  25. type: integer
  26. PRIMARY: true
  27. # ...

Czy da się zbudować referencje dla SomeTable tak aby wyciągała tagi podobnym zapytaniem
  1. SELECT * FROM tags t
  2. JOIN tags_references r ON (t.id = r.tag_id AND r.table_name = 'some_table')
  3. WHERE r.table_id = ?

Czy Doctrine przewiduje taką możliwość?

Ten post edytował seth-kk 21.11.2010, 17:35:39
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Musisz stworzyć najpierw relację 1-n pomiędzy Tag a TagTableReference, a następnie relację n-1 pomiędzy TagTableReference a Table.
Go to the top of the page
+Quote Post
seth-kk
post
Post #3





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


Dzięki Crozin za odpowiedź ale nie do końca o to chodzi. Wiem jak wymodelować relację many 2 many ale nie wiem jak wpleść tam dodatkowy warunek. Będę wdzięczny za jakiś przykład i/lub sprowadzenie na właściwą drogę
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Ahh.. w takim razie:
Kod
JOIN t.tableReferences r WITH r.tableName = ?
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #5





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Ja to zrobiłem tworząc 2 relacje, z tabeli A do B, i z C do B, ale trochę to utrudnia życie, bo trzeba się odwoływać np. A->B->C, zamiast A->C, da się coś takiego zrobić przezroczyście, nie odwołując się do tej dodatkowej tabeli? Oczywiście chodzi o dodatkowe pola w tabeli B, normalnie to wiem jak.
Go to the top of the page
+Quote Post
seth-kk
post
Post #6





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


@Mephistofeles: zdaje się refClass jest odpowiedzią na twoje pytanie
@Crozin: Dokładnie to tylko na poziomie modeli (Doctrine_Record) a nie Doctrine_Query. Jeśli jest to niemożliwe to napiszcie - pokombinuję z getterami i setterami
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #7





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


No właśnie mówię, że normalnie wiem jak to zrobić, ale chcę dołączyć do tego dodatkowe pole - potrzebuję relacji w stylu użytkownicy - produkty, ale z dodatkowym polem ilość. Da się to zrobić bez takich obejść jak pisałem?
Go to the top of the page
+Quote Post
seth-kk
post
Post #8





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


@Mephistofeles: skoro to dodatkowe pole nie mające wpływu na relację to prosty filtr po którejś stronie powinien wystarczyć
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #9





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Da się ustawić filtr z poziomu schema w Yamlu, czy jednak muszę przeciążać setUp?
Go to the top of the page
+Quote Post
seth-kk
post
Post #10





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


@Mephistofeles: Nie spotkałem się

Co do mojego pytania to odpowiedzią jest potomek typu column_aggregation użyty jako refClass
  1. Local_Reference:
  2. inheritance:
  3. extends: Reference
  4. type: column_aggregation
  5. keyField: GROUP
  6. keyValue: 1
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 16:55