在CodeIgniter中设置状态

时间:2016-12-03 14:26:43

标签: php mysql codeigniter

在我的项目中,有一个实例,我必须实现一个Switch机制,其中应用程序将在SQL Query上的2个选项之间切换。两个选项基于时间和投票数。

你能设置一种排序状态来解决这种情况(比如在React中),或者你如何解决这种情况。

现在默认情况下,应用程序按投票数查询记录。

function getPosts($limit, $offset) {
        if ($offset > 0) {
            $offset = ($offset - 1) * $limit;
        }
        //$selectedQuery = 'SELECT * FROM posts ORDER BY timestamp ASC LIMIT ' . $limit . ' OFFSET ' . $offset;
        $selectedQuery = 'SELECT * FROM posts ORDER BY upvotes DESC LIMIT ' . $limit . ' OFFSET ' . $offset;
        $result['rows'] = $this->db->query($selectedQuery);
        $result['num_rows'] = $this->db->count_all_results($this->posts);
        return $result;
}

我想切换 selectedQuery 。我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:0)

我会用配置项来实现这一点。但是我不确定为什么简单检查一下投票数不会帮助你决定应用哪个SQL语句。

对于使用配置项,您可以在自己的配置文件中设置默认配置项值,当您希望它“切换”到另一个值时设置它。

或者,您可以将配置值添加到默认配置文件中。如果需要,您的配置文件也可以在autoload.php中自动加载。

这里有很好的描述:http://www.codeigniter.com/user_guide/libraries/config.html#config-class

但总结如下:

加载配置文件

 $this->config->load('sql_select_switch');

阅读配置设置

 $this->config->item('selected_query');

设置配置设置

 $this->config->set_item('selected_query', 'item_value');

您可以在应用程序的任何位置设置和读取设置。如果您只有两个设置,默认设置和备用设置,则可以将该值设置为TRUE或FALSE。

这是否实现了您的目标?希望它有所帮助。