seth-kk
21.11.2010, 17:35:07
Witam
Czy w Doctrine da się na poziomie YAML stworzyć relację many 2 many z dodatkowy parametrem?
Przykład
Tag:
tableName: tags
COLUMNS:
id:
type: integer
PRIMARY: true
TagsReferences:
tableName: tags_references
COLUMNS:
tag_id:
type: integer
PRIMARY: true
table_name:
type: string(50)
PRIMARY: true
table_id:
type: integer
PRIMARY: true
SomeTable:
tableName: some_table
COLUMNS:
id:
type: integer
PRIMARY: true
# ...
Czy da się zbudować referencje dla SomeTable tak aby wyciągała tagi podobnym zapytaniem
SELECT * FROM tags t
JOIN tags_references r ON (t.id = r.tag_id AND r.table_name = 'some_table')
WHERE r.table_id = ?
Czy Doctrine przewiduje taką możliwość?
Crozin
21.11.2010, 17:36:35
Musisz stworzyć najpierw relację 1-n pomiędzy Tag a TagTableReference, a następnie relację n-1 pomiędzy TagTableReference a Table.
seth-kk
22.11.2010, 11:56:06
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ę
Crozin
22.11.2010, 14:18:04
Ahh.. w takim razie:
Kod
JOIN t.tableReferences r WITH r.tableName = ?
Mephistofeles
22.11.2010, 14:40:48
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.
seth-kk
22.11.2010, 21:14:15
@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
Mephistofeles
22.11.2010, 22:11:28
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?
seth-kk
23.11.2010, 08:50:37
@Mephistofeles: skoro to dodatkowe pole nie mające wpływu na relację to prosty
filtr po którejś stronie powinien wystarczyć
Mephistofeles
24.11.2010, 18:12:45
Da się ustawić filtr z poziomu schema w Yamlu, czy jednak muszę przeciążać setUp?
seth-kk
25.11.2010, 21:34:28
@Mephistofeles: Nie spotkałem się
Co do mojego pytania to odpowiedzią jest potomek typu column_aggregation użyty jako refClass
Local_Reference:
inheritance:
extends: Reference
type: column_aggregation
keyField: GROUP
keyValue: 1
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.