Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Active Record - where
ayeo
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


W celach edukacyjnych piszę sobie coś jakby Active Record. Zastanawiam się jak to jest z klauzulą WHERE w innych tego typu rozwiązaniach. Jak na razie to widziałem tylko w Code Igniter coś takiego:

$AR->where($nazwa_kolumy, $wartość);

co oznacza WHERE nazwa_kolumny = wartość. Można oczywiście wywołać tą metodę wielokrotnie co nam połączy poszczególne zapytania. Problemem jest przekazywanie warunków typu WHERE nazwa_kolumny > wartość lub jakieś bardziej skomplikowane zapytania typu:

WHERE (kolumna1 > 10 OR kolumna2 < 100) AND kolumna3 = 1

Można to niby rozwiązać przez przekazywanie całego warunku do metody where(); jednak stwarza to dodatkowe problemy. Jakie są wasze propozycje i jak Wy rozwiązujecie coś takiego u siebie?

Z góry dziękuję za wszelkie rady/wskazówki/sugestie. Pozdrawiam!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


A może coś na wzór Propela?
  1. <?php
  2. $c = new Criteria();
  3. //parametry: nazwa kolumny, wartość, metoda porównania
  4. $c->add( ProArticlePeer::TITLE, '%'.$strTitle.'%', Criteria::LIKE );
  5. $cton1 = $c->getNewCriterion( ProArticlePeer::AUTHOR, '%'.$strAuthor.'%', Criteria::LIKE );
  6. $cton2 = $c->getNewCriterion( ProArticlePeer::NUMBER, $intNumber, Criteria::LESS_THAN );
  7. $cton3 = $c->getNewCriterion( ProArticlePeer::CONTENT, '%'.$strContent.'%', Criteria::LIKE );
  8. $cton1->addOr($cton2);
  9. $cton1->addOr($cton3);
  10. $c->add($cton1);
  11. ?>

Trochę zawikłane, ale ogólnie to co jest w nawiasach jest jako osobny obiekt Criterion, który się dodaje na pewnych warunkach do innego itd. ...

EDIT:
  1. WHERE ( ( author LIKE '%$strAuthor%' OR number < $intNumber ) OR content LIKE '%$strContent%' ) AND title LIKE '%$strTitle%'


Ten post edytował Sedziwoj 16.04.2008, 09:41:19
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: 12.10.2025 - 09:58