2013-02-14 2 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가 작성한 책을 읽어주세요. –

답변

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

감사합니다. 그리고 이제는 제가 그것을 보았습니다. 오브젝트 – adambullmer

+0

PHP5 이하 나 그 이상을 사슬로 묶을 수있는 객체를 반환해야한다는 것이 맞습니까? –

관련 문제