Codeigniter 基于用户输入构造查找查询。正确的方法
我正在使用Codeigniter和MongoDB开发一个web应用程序。 我需要创建一个使用以下标准搜索数据库的函数 标签 所有者用户名 地位 日期范围 它需要足够灵活,以便用户只按标签或状态进行搜索,而忽略其他标准 现在我正在使用if-else结构来处理不同的查询,这些查询反映了所选的 标准。例如下面的代码。这是非常糟糕的方式,因为我需要创建 匹配所有可能组合的查询Codeigniter 基于用户输入构造查找查询。正确的方法,codeigniter,mongodb,Codeigniter,Mongodb,我正在使用Codeigniter和MongoDB开发一个web应用程序。 我需要创建一个使用以下标准搜索数据库的函数 标签 所有者用户名 地位 日期范围 它需要足够灵活,以便用户只按标签或状态进行搜索,而忽略其他标准 现在我正在使用if-else结构来处理不同的查询,这些查询反映了所选的 标准。例如下面的代码。这是非常糟糕的方式,因为我需要创建 匹配所有可能组合的查询 if ($args['status']) { $this->mongo_db->select ($sele
if ($args['status']) {
$this->mongo_db->select ($select)->
where('user_name', $args['username']) ->
where ('status', $args['status']) ->
where_in_all ('file_tags', $tags) ->
limit ($limit) ->
offset ($offset) ->
get ('files');
} else {
$this->mongo_db->select ($select)->
where('user_name', $args['username']) ->
where_in_all ('file_tags', $tags) ->
limit ($limit) ->
offset ($offset) ->
get ('files');
}
在MongoDB中没有更好的搜索方法吗?为什么不基于用户输出创建查询,然后使用它从MongoDB获取数据呢。下面是伪代码
if (status) {
query.put(status, status)
}
if (tags) {
query.put(tags, tags)
}
... etc
mongo_db->select ($query) - > limit -> offet -> get
为什么不基于用户输出创建查询,稍后再使用它从mongoDb获取数据呢。下面是伪代码
if (status) {
query.put(status, status)
}
if (tags) {
query.put(tags, tags)
}
... etc
mongo_db->select ($query) - > limit -> offet -> get
我不知道你到底是什么意思。我想避免if/else其他方面的组合太多,因为我有6个标准,它们可以根据用户喜好混合。啊,不,我想我知道你的意思。是否添加到数组查询(如果存在)?如何在PHP中以最佳方式实现这一点?是的,动态构建数组并将其作为查询对象传递。遗憾的是,我不知道如何在PHPIs中做得更好,因为有可能对这个查询进行类似的操作:where_lt“created_at”,new MongoDate strotime$args['date_to']->不确定您的确切意思。我想避免if/else其他方面的组合太多,因为我有6个标准,它们可以根据用户喜好混合。啊,不,我想我知道你的意思。是否添加到数组查询(如果存在)?如何在PHP中以最佳方式实现这一点?是的,动态构建数组并将其作为查询对象传递。可悲的是,我不知道如何在PHPIs中做得更好。有可能对这个查询做一些类似的事情:where_lt“created_at”,new MongoDate strotime$args['date_to']->