Напомню для запамятовавших Model в парадигме MVC отвечает за работу с источником данных, обычно это MySQL и прочие реляционные БД, хотя сейчас набирают популярность NoSQL БД. Сейчас не об этом в этой заметке покажу, как работать с Model в CodeIgniter т.к. это доставило наибольшие сложности при работе с этим Фреймворком. Начнем с того что у нас есть выбор как исполнять запросы к БД в CodeIgniter первое мы можем пользоваться привычными нам запросами sql вызывая функцию query(‘some query’); Лучше изучать что либо на примере, лучше один раз увидеть чем сто раз услышать. Стоит упомянуть о конвенции, класс модели должен начинаться с большой буквы, имя файла должно соответствовать имени класса в нижнем регистре.
class Blogmodel extends CI_Model { public _construct() { parent::__construct(); } public function get_last_entries() { $query = $this->db->query('SELECT *FROM posts LIMIT 10'); return $query; } public function get_last_post() { $query = $this->db->query('SELECT *FROM posts LIMIT 1'); return $query; } public function update_record($title,$post) { $sql = "INSERT INTO posts(title, post) VALUES (".$this->db->escape($title).", ".$this->db->escape($post).")"; $this->db->query($sql); echo $this->db->affected_rows(); } } //... public function SomeFunctionWhereWeUseOurModel() { $this->load->model('Blogmodel'); $result=$this->Blogmodel->get_last_entries(); foreach($result->result() as $row) echo $row->title.'<br/>'; foreach($row->result_array() as $row) echo $row['title'].'<br/>'; $result=$this->Blogmodel->get_last_post(); $title=$result->row(); echo "our last post ".$title->title; $title=$result->row_array(); echo "our last post ".$title['title']; }
Continue reading “Model в CodeIgniter классически sql запросы и Active Record” »