Я пытаюсь обеспечить, чтобы я получал максимальную отдачу от своего класса моделей, и недавно я был новичком в M в MVC. Предполагая, что в вашей модели существуют такие функции:
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);
в$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
Да, вы можете, добавив 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+.