arone
26.10.2006, 23:19:31
Witam.
Krótko i zwięźle. Pytanie dotyczy biblioteki PROPEL.
Jak można stworzyć
bez użycia SQLa obiekt Criteria dla zapytanie typu:
SELECT id FROM tabelka WHERE (CURRENT_TIMESTAMP - jakas_data) < '3600 second';
Oczywiście mój problem leży w tym jak zapisać tą różnicę bo samo porównanie nie jest problemem.
Za pomoc w rozwiązaniu problemu będę wdzięczny.
arone
dr_bonzo
26.10.2006, 23:30:38
Przenosze php% -> Gotowe skrypty
splatch
27.10.2006, 18:54:52
Użyj unix timestamp i porównuj jak normalne liczby.
W Criterii masz również
odpowiednie stałe.
arone
27.10.2006, 20:50:09
Wszystko ok ale jak mam zapisać różnice(CURRENT_TIMESTAMP - jakas_data) za pomocą metod obiektu Criteria?
Zaznaczam że "jakas_data" jest kolumną tabelki.
Proszę o przykład.
splatch
27.10.2006, 22:33:08
Przepraszam za poprzednią odpowiedź, nie doczytałem do końca pytania..
Jak wiesz Criteria->add() oczekuje 3 argumentów
1. nazwy kolumny/aliasu
2. oczekiwanej wartości
3. operator
Argumenty są wykorzystywane w taki sposób, że powstaje wyrażenie kolumna operator wartość. W Twoim przypadku wygląda to inaczej - (CURRENT TIMESTAMP - kolumna) operator wartość i odbiega od standardowego wykorzystania Criterii.
Dlatego w grę wchodzą dwa/trzy rozwiązania:
1. stworzyć stałą w klasie Peer o jakiejś nazwie i o wartości (CURRENT TIMESTAMP - kolumna), z tym, że tym wypadku każda kolejna kolumna to dodatkowa stała.
2. walonka z Criterią i dodanie obsługi takiej składni samodzielnie
3. użycie składni:
Criteria->add(kolumna, "twój kod SQL", Criteria::CUSTOM)
... 4. modlić się by prace nad Propelem 2.0 zostały przyśpieszone, ponieważ jest w nim przebudowana Criteria, która umożliwi takie konstrukcje bez problemu.
Pozdrawiam,
Łukasz
arone
28.10.2006, 16:43:17
Bardzo dziękuję za wyczerpującą odpowiedź.
Już się zaczynam modlić
Dla zainteresowanych: Obecnie wykorzystywałem 3 sposób