2012-02-18 24 views
0

(MVC):アドバンス検索私はアドバンス検索、このようなものを作りたい

  • テキストボックス:
  • ドロップダウンを探す:名前、場所または電話
  • ドロップダウン::オーダーによる検索名前、場所、または電話を並び替え
  • ドロップダウン:(選択した場合)の日付の間に検索
ASCまたは12月
  • ドロップダウンによって

    モデルの関数にこれらのパラメータを追加する適切な方法は何ですか?

    私はこの解決策を考え出したています

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

    編集:私は、変数について話しています - findBy($find, $searchBy, $order, $sort, $betweenDate) - 私はすべてのこれらのパラメータを必要とするか、または代替の解決策はありますか?

  • +0

    のようなチュートリアルのためにグーグルができますか?また、あなたがここで何を求めているかは本当に不明です。 –

    +0

    @BenLee私は変数について話しています - 'findBy($ find、$ searchBy、$ order、$ sort、$ betweenDate)' - これらすべてのパラメータが必要なのでしょうか? –

    +0

    クラスvars、おそらくモデルではありません。クラスvarsに値を代入し、それらを使用してリクエストを構築するポストハンドラを持つことができます。少なくとも、検索コードを更新するたびにメソッドargを変更する必要はありません。単なるオプションです。 –

    答えて

    1

    解決策は問題ありません。あなたは次のクエリを作ることができるので、しかし、あなたはまた、Decoratorパターンを使用することができます。

    $shops = new ShopsModel(); 
    $results = $shops->search('name', 'Tadeck') 
        ->order_by('name', 'asc') 
        ->between_dates('2012-02-01', '2012-03-14') 
        ->fetch_all(); 
    
    +0

    +1、それは本当に良いアイデアです。私は、部分のみを検索するために 'ShopsSearchModel'を持たなければならないと思います。編集と削除のための 'ShopsModel'?すべてを1つのモデルに入れるには大きすぎます。どう思いますか? –

    +1

    @ user791022:それは異なります。私は読書、執筆、削除のために単一のモデルを使用することをやりたいと思っています。また、このようなメソッドは通常、クエリビルダーの一部であり、そのためのモデルは必要ありません。しかし、あなたが何を選ぶかにかかわらず、最も重要なことはアプリケーション全体で一貫していることです。 – Tadeck

    0

    私はあなたがknockoutjsまたはbackbonejsのようなJavaScriptライブラリと連動して行われるべきである記述しているものと思います。

    Nettutsはknockoutjsをカバーしているとデモがここにあります:http://nettuts.s3.amazonaws.com/1034_ko/demo/index.html

    あなたはYiiのようなパターンを使用している場合、あなたはどのようなフレームワークを使用しているこの1 http://aiao.be/2012/01/29/knockout-js-with-the-yii-framework-hello-world-example/

    関連する問題