模型中的高级搜索(MVC)

时间:2012-02-18 00:08:45

标签: php search database-abstraction

我想创建一个高级搜索,如下所示:

  • 文本框:查找
  • 下拉列表:搜索:姓名,位置或电话
  • 下拉:按Asc或Dec命令
  • 下拉列表:按名称,位置或电话排序
  • 下拉列表:在日期(如果已选择)之间搜索

在模型的函数中添加这些参数的正确方法是什么?

我想出了这个解决方案:

class ShopsModel extends Model {

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

}

修改:我在谈论变量 - findBy($find, $searchBy, $order, $sort, $betweenDate) - 我是否需要所有这些参数或是否有替代解决方案?

2 个答案:

答案 0 :(得分:1)

您的解决方案似乎没问题。但您也可以使用装饰器模式,因此您可以进行以下查询:

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

答案 1 :(得分:0)

我认为你所描述的内容应该与像knockoutjs或backbonejs这样的javascript库一起完成。

Nettuts已经介绍了knockoutjs,这里有一个演示:http://nettuts.s3.amazonaws.com/1034_ko/demo/index.html

如果你使用像Yii这样的模式,你可以谷歌搜索像这样的教程http://aiao.be/2012/01/29/knockout-js-with-the-yii-framework-hello-world-example/