2013-02-14 40 views
1

我试图确保我充分利用了我的模型类,并且我最近刚刚接触MVC中的M。假设在你的模型中存在这样的函数:你可以在CodeIgniter中链接模型调用

public function by_year($year) 
{ 
    $this->db->where('EXTRACT(YEAR FROM post_date) = '.$year); 
} 

public function by_month($month) 
{ 
    $this->db->where('EXTRACT(MONTH FROM post_date) = '.$month); 
} 

你可以像使用活动记录类一样链接这些调用吗?

$this->db->select('*')->from('table'); 
$this->model_name->by_year($year)->by_month($month); 
$results = $this->db->get()->result_array(); 
print_r($results); 

或者,如果有一种方法可以在1行代码中执行此操作,那对我来说会更好。很明显,上述方法不起作用,我得到一个错误Fatal error: Call to a member function by_month() on a non-object

+0

是的,你可以做它的细节请阅读由@JamieRumbelow书面 – 2013-02-14 18:06:43

回答

6

是的,你可以,通过添加一个return $this到每个方法。

public function by_year($year) 
{ 
    $this->db->where('EXTRACT(YEAR FROM post_date) = '.$year); 
    return $this; 
} 

public function by_month($month) 
{ 
    $this->db->where('EXTRACT(MONTH FROM post_date) = '.$month); 
    return $this; 
} 

这只适用于PHP 5+。

+0

感谢工作像一个魅力。现在,我看到它,这是有道理的,我需要返回一个对象,以便链接对象下面或以上的PHP5 – adambullmer 2013-02-14 18:22:47

+0

? – 2017-11-24 05:04:24

相关问题