组合模型功能的正确方法

时间:2017-07-12 15:20:32

标签: php opencart

我正在使用Opencart,我在模型文件中有这些功能,基本上是相同的。有没有更好的方法呢?保持重复代码行似乎是浪费,但我不确定处理这个问题的正确方法是什么。我能以某种方式结合这些陈述吗?这是一种正确的方法吗?我的PHP技能不是很好,这里的一些建议将不胜感激。这是函数

    public function getSum() {
            $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 12 MONTH) ");           
           return $query->row; 
    }
        public function lastThirty() {
            $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 1 MONTH)" );            
           return $query->row; 
    }
 public function lastYearNow() {
            $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 12 MONTH) ");           
           return $query->row; //will be giving this time last year, not figured out yet.
    }
        public function lastYearTotal() {
            $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL 1 MONTH)" );            
           return $query->row; //will be total for last last year, not figured out yet.
    }

2 个答案:

答案 0 :(得分:1)

您可以将重复的代码提取到方法中,并仅将月数(如果这是唯一的差异)作为参数。但是为了冗长,我会保留所有其他方法。

答案 1 :(得分:1)

您可以使用单个函数而不是四个函数,并使用参数作为动态值,即月份。所以你的方法看起来像这样:

public function getSum($month = 12) {
  $query = $this->db->query("SELECT SUM(amount) as amount_sum FROM " . DB_PREFIX . "donate Where date_added >= (CURDATE() - INTERVAL " . $month . " MONTH) ");           
  return $query->row; 
}

在调用此方法时,您可以将所需的结果传递给月份,否则它将显示12个月的结果。希望这会对你有所帮助。

注意:建议保留所有这些方法,因为这些方法包含少量代码,并且在功能上您可能需要使用不同的方法来执行不同的操作。