Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Doctrine2 komentarze
Piotrkus
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 13.10.2011

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


Witam,


Posiadam obiekty: artykuły, produkty, itp. Każdy z nich może mieć komentarze.


mógłbym zrobić tabele artcomment , productcomment,itp
i odpowiednio utworzyć relacje Many-To-one

Ale jak zrobić by zamiast artcomment , productcomment , była po prostu jedna tabela comment ? I posiadała relacje z (artykułem lub produktem, musiałyby być unikalne pola id dla tych dwóch tabel).


Mam nadzieje, że w dość zrozumiały sposób przedstawiłem mój problem.
Pozdrawiam

Ten post edytował Piotrkus 4.12.2011, 20:32:13
Go to the top of the page
+Quote Post
MitS
post
Post #2





Grupa: Zarejestrowani
Postów: 262
Pomógł: 5
Dołączył: 8.02.2005
Skąd: Olsztyn / Zatorze

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


w tabeli comment utworz klucze obce (z opcją allow null) product_id, art_id.
Jesli komentarz bedzie tyczyc sie produktu to pole product_id bedzie mialo id zas art_id bedzie NULL.
Go to the top of the page
+Quote Post
Orzeszekk
post
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 14
Dołączył: 8.09.2011

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


Napisales ze z artykulem lub produktem, jezeli jeden komentarz nie moze sie odnosic zarowno do artykulu jak i do produktu to niech tabela comment ma jedną kolumnę z ID_komentowanego_obiektu, a druga kolumna w comment niech bedzie tinyint( watpie bys mial wiecej jak 256 typow a zawsze to pare bajtow do przodu), i niech oznacza typ komentarza (artykul/produkt).

jezeli moga sie odwolywac na raz do dwoch to tak jak kolega wyzej napisal.

Pozniej wystarczy zapisac artykul i produkt jako stałą np artykul_type=1 produkt_type=2.

Do obiektu rysujacego komentarze to juz twoja wola jak zrobisz. Jesli rysujesz je tak samo to po prostu przekazujesz obiektowi parametr type, a jezeli w rozny sposob to robisz 2 obiekty rysujace i 3 go nadzorce ktory zwraca odpowiedni obiekt w zaleznosci od typu.
Go to the top of the page
+Quote Post
ano
post
Post #4





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

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


Cytat(Orzeszekk @ 5.12.2011, 04:11:40 ) *
Napisales ze z artykulem lub produktem, jezeli jeden komentarz nie moze sie odnosic zarowno do artykulu jak i do produktu to niech tabela comment ma jedną kolumnę z ID_komentowanego_obiektu, a druga kolumna w comment niech bedzie tinyint( watpie bys mial wiecej jak 256 typow a zawsze to pare bajtow do przodu), i niech oznacza typ komentarza (artykul/produkt).

jezeli moga sie odwolywac na raz do dwoch to tak jak kolega wyzej napisal.

Pozniej wystarczy zapisac artykul i produkt jako stałą np artykul_type=1 produkt_type=2.

Do obiektu rysujacego komentarze to juz twoja wola jak zrobisz. Jesli rysujesz je tak samo to po prostu przekazujesz obiektowi parametr type, a jezeli w rozny sposob to robisz 2 obiekty rysujace i 3 go nadzorce ktory zwraca odpowiedni obiekt w zaleznosci od typu.


Oj lekko mówiąc niezbyt to zgodne z modelem relacyjnych baz danych. (IMG:style_emoticons/default/ohmy.gif)
I Doctrine na coś takiego nie pozwoli.

@Piotrkus - zrób tak jak napisał @Mits.

Czyli:
1. w mapowaniu "article":
  1. oneToMany:
  2. comments:
  3. targetEntity: Comment
  4. mappedBy: article


2. w mapowaniu "product":
  1. oneToMany:
  2. comments:
  3. targetEntity: Comment
  4. mappedBy: product


3. w mapowaniu "comments":
  1. manyToOne:
  2. article:
  3. targetEntity: Article
  4. inversedBy: comments
  5. product:
  6. targetEntity: Product
  7. inversedBy: comments


Dzięki temu będziesz mógł z komentarza dostać się do artykułu/produktu i na odwrót (relacja dwustronna)
article->getComments();
comment->getArticle();
coś w tym stylu.
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: 24.08.2025 - 21:55