Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Doctrine]Entities i ich statusy
Virti
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


Witam,

z racji, że większość entities w projekcie będzie miała swoje statusy (np. deleted, verified, expired itd.) oraz z uwagi na fakt, że będę potrzebował historię zmian tych statusów wymyśliłem następujące rozwiązanie:

Entity Status:
  1. <?php
  2. class Status
  3. {
  4. protected $id;
  5. protected $type = null; // np. deleted, hidden, highlighted
  6. protected $value = true; // true|false
  7. protected $change_reason = null; // uzasadnienie dlaczego status został zmieniony (dotyczy np. locked itd.)
  8. protected $changed_by // osoba, która dokonała zmiany;
  9. protected $changed_at // datetime zmiany;
  10. }


dla przejrzystości usunąłem adnotacje.

Myk polega na tym, że mam entity np. Account. Pomiędzy tymi dwoma obiektami tworzę relację many to many (nie chcę w tabeli status dawać np. account_id ponieważ Status będzie podpinany do jeszcze wielu innych obiektów). Z każdej "statusowalnej" klasy wyprowadzam zatem powiązanie do Status poprzez tabelę pośredniczącą.

Moje pytania są następujące:
1. Czy taka struktura według osób bardziej niż ja doświadczonych (zaczynam z Sf2 dopiero) jest poprawna i ma ręce i nogi?
2. W jaki prosty sposób mogę pobrać te statusy wraz z obiektem? Interesują mnie oczywiście najnowsze z danego typu. W czystym SQL pobranie aktualnych statusów wyszło mi w nast. sposób:
  1. SELECT * FROM (
  2. SELECT t.type, t.value
  3. FROM vtb_status AS t
  4. ORDER BY t.changed_at DESC
  5. ) AS t1 GROUP BY t1.type


Z góry dziękuję za wszelkie dobre rady i pomoc,
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Virti
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 11.01.2005
Skąd: Zduńska Wola

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


Założenie jest takie, że jeden status jest przypisany tylko do jednego konta (pole status_id w tabeli łączącej ma być unique), tak aby jeden status mógł być wykorzystany tylko raz. Poza tym powód zmiany statusu musi być częścią historii - zatem dobrze by było, gdyby był trzymany razem ze statusem - tak mi się wydaje.

Jakiś pomysł jak mogę połączyć pobieranie Account z zapytaniem SQL wyżej? Zależałoby mi, żebym mógł wyświetlić listę kont z ich statusami zachowując jednocześnie pewną (na tym etapie chociaż szczątkową) optymalizację.

Pozdrawiam i dzięki za odpowiedź! (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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.12.2025 - 16:20