Области - это простой способ создания простых фильтров по умолчанию.С помощью области вы можете автоматически сортировать результаты по определенным столбцам, ограничивать результаты, применять условия и т. Д. В ссылках, предоставляемых @ldg, есть большой пример того, насколько они крутые:
$posts=Post::model()->published()->recently()->findAll();
Кто-тоизвлечение всех недавно опубликованных постов в одну строку.Их легче поддерживать, чем встроенные условия (например, Post::model()->findAll('status=1')
), и они инкапсулированы внутри каждой модели, что означает большую прозрачность и простоту использования.
Кроме того, вы можете создавать свои собственные области на основе параметров, например:
public function last($amount)
{
$this->getDbCriteria()->mergeWith(array(
'order' => 't.create_time DESC',
'limit' => $amount,
));
return $this;
}
Добавление чего-то подобного в модель позволит вам выбрать количество объектов, которые вы хотите извлечь из базы данных (отсортировано по времени создания).Возвращая сам объект, вы разрешаете цепочку методов.
Вот пример:
$last3posts=Post::model()->last(3)->findAll();
Получает последние 3 элемента.Конечно, вы можете расширить пример практически до любого свойства в базе данных.Приветствия