Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Aktualizacja rekordów
blackroger
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

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


Witam....pracuję z frameworkiem symfony ale myślę, że problem jest na tyle ogólny że można go umieścić tutaj...
Mianowicie...jestem w trakcie projektowania serwisu aukcyjnego i mam dylemat...Każdą aukcję opieram na statusie. Czyli jeżeli aukcja ma status active oznacza, że jest dostępna i można licytować itd. Jak najlepiej zrobić aktualizację tych aukcji? Myślałem, żeby sprawdzać warunek i aktualizować w momencie pierwszego wejścia jakiegokolwiek usera na daną aukcję po czasie zakończenia. Czyli powiedzmy aukcja trwa do 12 00, w momencie jak ktoś wejdzie po 12 00 będzie sprawdzany warunek i zmieniany status. Ale wtedy też jest problem, bo w momencie wyszukiwania aukcji będą również widoczne te które mają jeszcze niezmieniony status (czyli np. nikt jeszcze nie wszedł na taką ). Myślałem też o metodzie np. checkAndChangeStatus(), która byłaby w każdym możliwym miejscu wywoływana w celu aktualizacji. Jeszcze wcześniej myślałem na bezpośrednim działaniu na bazie (PL/SQL albo wyzwalacze) ale po dłuższym zastanowieniu też straciło to sens. Proszę o pomoc i wypowiedź człowieka, który takie coś robił i wie jak to najlepiej zrobić.
Pozdrawiam.

Ten post edytował blackroger 23.11.2009, 01:49:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


Status aukcji to raczej abstrakcyjna właściwość, czyli może zależeć od - nawet kilku - innych zmiennych.
W tym co opisujesz to nic innego jak dynamiczne porównanie dat przy pobieraniu zestawu zakończonych/niezakończonych aukcji.

Dla Propela to bedzie:
  1. class AuctionPeer extends BaseAuctionPeer
  2. {
  3. public static function doSelectAcive(Criteria $criteria, PropelPDO $con = null)
  4. {
  5. $c = clone $criteria;
  6. $c->add(self::FINISHED_AT, Criteria::CURRENT_TIMESTAMP, Criteria::GREATER_THAN);
  7. // więcej warunków
  8. $c->addAnd(self::WINNER_ID, null, Criteria::ISNULL); // prosty przykład dla aukcji posiadającej tylko jednego zwycięzcę
  9. return self::doSelect(Criteria $criteria, PropelPDO $con = null);
  10. }
  11.  
  12. public static function doSelectFinished(Criteria $criteria, PropelPDO $con = null)
  13. {
  14. $c = clone $criteria;
  15. $c->add(self::FINISHED_AT, Criteria::CURRENT_TIMESTAMP, Criteria::LESS_EQUAL);
  16. // więcej warunków np.
  17. $c->addOr(self::WINNER_ID, null, Criteria::ISNOTNULL); // prosty przykład dla aukcji posiadającej tylko jednego zwycięzcę
  18. return self::doSelect(Criteria $criteria, PropelPDO $con = null);
  19. }
  20. }


Pisze z palca, więc mogą być literówki.

Ten post edytował LBO 23.11.2009, 14:37:02
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: 25.12.2025 - 20:58