Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Параметры реляционного запроса

Читайте также:
  1. Атрибуты запроса
  2. Вопрос 4. ПСИХОЛОГИЧЕСКИЕ ПАРАМЕТРЫ ДИЗОНТОГЕНЕЗА. ХАРАКТЕРИСТИКА ОСНОВНЫХ ВИДОВ ДИЗОНТОГЕНЕЗА
  3. Входные и выходные параметры.
  4. Выполнение реляционного запроса
  5. Геометрические параметры
  6. ГЛАВА 10 ПАРАМЕТРЫ ОБЛЕГЧАЮЩИХ РЕАКЦИЙ
  7. Заголовки запроса
  8. Законы раздражения. Параметры возбудимости
  9. Замеряемые параметры и расположение сечений замера
  10. Зубчатые конические передачи:геометрические параметры и силы зацепления.расчет на прочность.

Выше мы упоминали о том, что в реляционном запросе можно указать дополнительные параметры. Эти параметры — пары имя-значение — используются для тонкой настройки реляционного запроса. Список параметров представлен ниже.

Кроме того, для отложенной загрузки некоторых типов связей доступен ряд дополнительных параметров:

Ниже мы изменим определение связи posts в модели User, добавив несколько вышеприведенных параметров:

class User extends CActiveRecord

{

public function relations()

{

return array(

'posts'=>array(self::HAS_MANY, 'Post', 'author_id',

'order'=>'posts.create_time DESC',

'with'=>'categories'),

'profile'=>array(self::HAS_ONE, 'Profile', 'owner_id'),

);

}

}

Теперь при обращении к $author->posts, мы получим записи автора, отсортированные в обратном порядке по времени их создания. Для каждой записи будут загружены её категории.

5. Устранение конфликта имён столбцов

При совпадении имён столбцов в двух и более соединяемых таблицах, приходится разрешать конфликт имён. Это делается при помощи добавления псевдонима таблицы к имени столбца.

В реляционном запросе псевдоним главной таблицы всегда равен t, а псевдоним связанной таблицы по умолчанию равен имени связи. В приведённом ниже коде псевдонимы таблиц для моделей Post и Comment будут соответственно t и comments:

$posts=Post::model()->with('comments')->findAll();

Допустим, что и в Post, и в Comment есть столбец create_time, в котором хранится время создания записи или комментария, и нам необходимо получить записи вместе с комментариями к ним, отсортированные сначала по времени создания записи, а затем по времени написания комментария. Для этого нам понадобится устранить конфликт столбцов create_time следующим образом:

$posts=Post::model()->with('comments')->findAll(array(

'order'=>'t.create_time, comments.create_time'

));




Дата добавления: 2015-09-10; просмотров: 69 | Поможем написать вашу работу | Нарушение авторских прав

Установка связей между AR-классами | Реляционные запросы с именованными группами условий | Reflexives | Adjectives | Volunteer: ??? | Project description |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав