Model в CodeIgniter классически sql запросы и Active Record

Октябрь 11th, 2011 § 2 comments § Прямая ссылка

Напомню для запамятовавших 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” »

Создание библиотеки для CodeIginter

Сентябрь 22nd, 2011 § 1 comment § Прямая ссылка

При написании своего не большого проекта понадобилась сделать простую фичу вроде того если пользователь авторизован то имеет доступ к странице, а нет так делаем редирект.  Подумал, что каждый раз писать проверку в каждом методе контроллера это не есть гуд. Сначала мысль пошла в направлении создать статический метод в контроллере и обращаться к нему из всех остальных, но не тут – то было, нельзя. Чутка по-гуглив нарисовалось два решения, ставить HMVC  либо писать библиотеку. Я выбрал последнее. Как оказалось это совсем не сложно


class Authlib {
 public function Authlib()
 {
 $this->CI = & get_instance();
 $this->CI->load->helper('url');
 $this->CI->load->library('session');
 }
 public function isLogged()
 {
 if(!isset($this->CI->session->userdata['auth']))
 redirect (base_url(),'refresh');
 }
 private $CI;
}

Внутри контроллера при каждом вызове пропишем эту строку и тогда если наш пользователь не авторизован он будет ловить редирект


$this->authlib->isLogged();

Что бы иметь доступ к библиотеке из конторолера есть два способа, загрузить его в autoload.php либо явно загружать каждый раз в конторолере, я выбрал сразу, мне кажется так удобнее.


$autoload['libraries'] = array('database','session','authlib');

Вот такой просто способ создания либ за более детальным описанием можно обратится к документации тут

Смотреть фильмы онлайн