Chcę utworzyć wyszukiwanie zaawansowane, coś takiego:

  • Pole tekstowe: Znajdź
  • Menu rozwijane: szukaj według: nazwy, lokalizacji lub telefonu
  • Rozwijane: Zamów według Asc lub Dec
  • Lista rozwijana: Sortuj według nazwy, lokalizacji lub telefonu
  • Lista rozwijana: Wyszukaj między datami (jeśli wybrano)

Jaki jest właściwy sposób dodania tych parametrów w funkcji dla modelu?

Wymyśliłem to rozwiązanie:

class ShopsModel extends Model {

  findBy($find, $searchBy, $order, $sort, $betweenDate) {
   // some MySQL query here...
  }

}

Edytuj: mówię o zmiennych – findBy($find, $searchBy, $order, $sort, $betweenDate) – czy potrzebuję wszystkich tych parametrów, czy istnieje alternatywne rozwiązanie?

0
I'll-Be-Back 18 luty 2012, 04:08

2 odpowiedzi

Najlepsza odpowiedź

Twoje rozwiązanie wydaje się być w porządku. Ale możesz również użyć wzoru dekoratora, dzięki czemu możesz wykonać następujące zapytanie:

$shops = new ShopsModel();
$results = $shops->search('name', 'Tadeck')
    ->order_by('name', 'asc')
    ->between_dates('2012-02-01', '2012-03-14')
    ->fetch_all();
1
Tadeck 18 luty 2012, 04:18

Myślę, że to, co opisujesz, powinno być zrobione w połączeniu z biblioteką javascript, taką jak knockoutjs lub backbonejs.

Nettuts omówił knockoutjs, a demonstracja jest dostępna tutaj: http://nettuts.s3. amazonaws.com/1034_ko/demo/index.html

Jeśli używasz wzorca takiego jak Yii, możesz poszukać w Google samouczków takich jak ten http://aiao.be/2012/01/29/knockout-js-with-the-yii-framework-hello-world-example/

0
Gandalf 18 luty 2012, 19:33