Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [symfony][propel] funkcja sql jako kryterium
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hej,
od dłuższego czasu walczę z pewnym problemem i nie mogę sobie poradzić. Otóż mam taki kod:
  1. <?php
  2. $c = new Criteria();
  3. $c->add(sfGuardUserPeer::IS_ACTIVE, false);
  4. $c->addAsColumn('timediff', 'TIME_TO_SEC(TIMEDIFF(NOW(), created_at))');
  5. $c->getNewCriterion(sfGuardUserPeer::ID, 'timediff > '.sfConfig::get('app_time_expired_user'), Criteria::CUSTOM);
  6. $c->addAscendingOrderByColumn(sfGuardUserPeer::USERNAME);
  7. $users = sfGuardUserPeer::doSelect($c);
  8. ?>

W rezultacie chciałbym otrzymać takie zapytanie:
  1. SELECT id, username, is_active, TIME_TO_SEC(TIMEDIFF(NOW(), created_at)) AS timediff FROM sf_guard_user WHERE timediff>86400 AND is_active=0 ORDER BY username;

Co bym jednak nie zrobił to zawsze otrzymuję powyższe zapytanie ale bez warunku timediff>86400... W sumie nie jestem pewien pierwszego parametru w $c->getNewCriterion().
Czy mógłbym prosić o pomoc w rozwiązaniu tego problemu?

PS: przy okazji: w jaki sposób można podejrzeć tworzone zapytanie (poprzez echo, nie w debugerze). echo $c, echo $c->__toString() nie działa...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Moim zdaniem zapomniałeś o dodaniu criterion'a:
  1. <?php
  2. $c1 = $c->getNewCriterion(sfGuardUserPeer::ID, 'timediff > '.sfConfig::get('app_time_expired_user'), Criteria::CUSTOM);
  3. $c->add($c1);
  4. ?>

Poza tym jeśli chcesz jeszcze pobrać inne kolumny to musisz dać jeszcze:
  1. <?php
  2. sfGuardUserPeer::addSelectColumns($c);
  3. ?>

Dodam jeszcze, że u mnie nie udało się uruchomić tego zapytania.

Tworzone zapytanie sprawdzisz przez:
  1. <?php
  2. $c->toString();
  3. ?>

ale bez parametrów, jeśli chcesz całe zapytanie to:
  1. <?php
  2. Propel::getConnection()->getLastExecutedQuery();
  3. ?>
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Dzięki za odpowiedź.
W sumie na razie załatwiłem to zwykłym zapytaniem SQL i na razie niechaj tak pozostanie (skoro Tobie nie udało się odpalić podobnego zapytania).
Niemniej jednak jeszcze raz dzięki za pomoc.
Go to the top of the page
+Quote Post
destroyerr
post
Post #4





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Miałem na myśli to, że Twoje zapytanie jest błędne, ponieważ w WHERE nie można korzystać aliasu na kolumnę. Chyba, że się mylę.
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Fakt (IMG:http://forum.php.pl/style_emoticons/default/wstydnis.gif)
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: 23.08.2025 - 01:51