Работа с базой данных

Набор приемов работа с банной данных. Примеры выборок под различные нужды.

  1. Формируем выборку постов из базы данных принадлежащих запрашиваемой теме и имеющих статус 'enable'. Делаем пагинацию по 3 на страницу.
  2. Проверка уникальности поля
  3. Пагинация в CGridView



1. В отображение передаем массив объектов всех постов $allPosts согласно заданному условию и пагинацию $pages.

Выборка имеет вид:

"SELECT * FROM tbl_posts WHERE (status='enable' AND theme_id='передаваемый id рубрики') ORDER BY DESC"

Что в коде:

$criteria = new CDbCriteria();
$criteria->order = 'create_time DESC'; //Сортировка по убыванию даты создания
$criteria->condition = 'status = :status AND theme_id = :theme_id'; //WHERE
$criteria->params = array(':status'=>'enable', ':theme_id'=>$id);
// пагинация
$count=Posts::model()->count($criteria);
$pages=new CPagination($count);// элементов на страницу
$pages->pageSize=3;
$pages->applyLimit($criteria); //передаваемый в отображение параметр
//Получаем все посты
$allPosts = Posts::model()->findAll($criteria); //передаваемый в отображение параметр

2. Проверка уникальности поля при валидации модели. Добавляем в rules() модели:


array('address', 'unique', 'message'=>'E-mail присутствует в базе данных.'),

3. Пагинация в CGridView. Изменение вывода требуемого количества строк на страницу производить в модели в методе search();

           return new CActiveDataProvider($this, array(
			'criteria'=>$criteria,
                        pagination=>array('pageSize'=>100),
	   ));


ОБСУЖДЕНИЕ: