CBaseActiveRelation
| Пакет | system.db.ar |
|---|---|
| Наследование | класс CBaseActiveRelation » CComponent |
| Подклассы | CActiveRelation, CStatRelation |
| Исходный код | framework/db/ar/CActiveRecord.php |
Свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| className | строка | имя класса связанной активной записи | CBaseActiveRelation |
| condition | строка | условие WHERE. Для подклассов CActiveRelation имена столбцов, упоминаемые в условии, должны быть уточнены префиксом 'relationName.'. | CBaseActiveRelation |
| foreignKey | смешанный тип | внешний ключ в данном отношении | CBaseActiveRelation |
| group | строка | условие GROUP BY. Для подклассов CActiveRelation имена столбцов, упоминаемые в этом свойстве, должны быть уточнены префиксом 'relationName.'. | CBaseActiveRelation |
| having | строка | условие HAVING. Для подклассов CActiveRelation имена столбцов, упоминаемые в этом свойстве, должны быть уточнены префиксом 'relationName.'. | CBaseActiveRelation |
| join | строка | способ объединения с другими таблицами. Это относится к условию JOIN в SQL-запросе. Например, 'LEFT JOIN users ON users.id=authorID'. | CBaseActiveRelation |
| joinOptions | строка/массив | свойство для установки операций после JOIN, таких как USE INDEX. Строковое значение можно использовать для JOIN в отношениях HAS_MANY и MANY_MANY, а массивы предназначены только для отношений MANY_MANY. Первый элемент массива будет использован для JOIN таблицы соединения, а второй — для JOIN целевой таблицы. | CBaseActiveRelation |
| name | строка | имя связанного объекта | CBaseActiveRelation |
| order | строка | условие ORDER BY. Для подклассов CActiveRelation имена столбцов, упоминаемые в этом свойстве, должны быть уточнены префиксом 'relationName.'. | CBaseActiveRelation |
| params | массив | параметры, которые должны быть привязаны к условию. Ключи — имена заглушек параметров, значения — значения параметров. | CBaseActiveRelation |
| select | смешанный тип | список имён столбцов (массив или строка имён, разделённых запятыми), которые должны быть выбраны. | CBaseActiveRelation |
Методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CBaseActiveRelation |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение, в зависимости от его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения по его имени. | CComponent |
| attachBehavior() | Присоединяет поведение к компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, может ли свойство быть прочитано. | CComponent |
| canSetProperty() | Определяет, может ли свойство быть установлено. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все присоединённые поведения данного компонента. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединённые к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте данного компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединённые обработчики для указанного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| mergeWith() | Объединяет данное отношение с динамически заданными критериями. | CBaseActiveRelation |
| raiseEvent() | Вызывает событие. | CComponent |
Подробное описание свойств
className свойство
public string $className;
имя класса связанной активной записи
condition свойство
public string $condition;
условие WHERE. Для подклассов CActiveRelation имена столбцов, упоминаемые в условии, должны быть уточнены префиксом 'relationName.'.
foreignKey свойство
public mixed $foreignKey;
внешний ключ в данном отношении
group свойство
public string $group;
условие GROUP BY. Для подклассов CActiveRelation имена столбцов, упоминаемые в этом свойстве, должны быть уточнены префиксом 'relationName.'.
having свойство
public string $having;
условие HAVING. Для подклассов CActiveRelation имена столбцов, упоминаемые в этом свойстве, должны быть уточнены префиксом 'relationName.'.
join свойство (доступно начиная с v1.1.3)
public string $join;
способ объединения с другими таблицами. Это относится к условию JOIN в SQL-запросе. Например, 'LEFT JOIN users ON users.id=authorID'.
joinOptions свойство (доступно начиная с v1.1.16)
public string|array $joinOptions;
свойство для установки операций после JOIN, таких как USE INDEX. Строковое значение можно использовать для JOIN в отношениях HAS_MANY и MANY_MANY, а массивы предназначены только для отношений MANY_MANY. Первый элемент массива будет использован для JOIN таблицы соединения, а второй — для JOIN целевой таблицы.
name свойство
public string $name;
имя связанного объекта
order свойство
public string $order;
условие ORDER BY. Для подклассов CActiveRelation имена столбцов, упоминаемые в этом свойстве, должны быть уточнены префиксом 'relationName.'.
params свойство
public array $params;
параметры, которые должны быть привязаны к условию. Ключи — имена заглушек параметров, значения — значения параметров.
select свойство
public mixed $select;
список имён столбцов (массив или строка имён, разделённых запятыми), которые нужно выбрать. Не заключайте имена столбцов в кавычки и не добавляйте префиксы, если только они не используются в выражении. В этом случае имена столбцов нужно префиксровать 'relationName.'.
Подробное описание методов
__construct() метод
public void __construct(string $name, string $className, string $foreignKey, array $options=array ( )) | ||
| $name | строка | имя отношения |
| $className | строка | имя класса связанной активной записи |
| $foreignKey | строка | внешний ключ для этого отношения |
| $options | массив | дополнительные параметры (имя=>значение). Ключи должны соответствовать именам свойств этого класса. |
public function __construct($name,$className,$foreignKey,$options=array())
{
$this->name=$name;
$this->className=$className;
$this->foreignKey=$foreignKey;
foreach($options as $name=>$value)
$this->$name=$value;
}
Конструктор.
mergeWith() метод
public void mergeWith(array $criteria, boolean $fromScope=false) | ||
| $criteria | массив | динамически заданные критерии |
| $fromScope | логическое значение | являются ли критерии из областей |
public function mergeWith($criteria,$fromScope=false)
{
if($criteria instanceof CDbCriteria)
$criteria=$criteria->toArray();
if(isset($criteria['select']) && $this->select!==$criteria['select'])
{
if($this->select==='*'||$this->select===false)
$this->select=$criteria['select'];
elseif($criteria['select']===false)
$this->select=false;
elseif($criteria['select']!=='*')
{
$select1=is_string($this->select)?preg_split('/\s*,\s*/',trim($this->select),-1,PREG_SPLIT_NO_EMPTY):$this->select;
$select2=is_string($criteria['select'])?preg_split('/\s*,\s*/',trim($criteria['select']),-1,PREG_SPLIT_NO_EMPTY):$criteria['select'];
$this->select=array_merge($select1,array_diff($select2,$select1));
}
}
if(isset($criteria['condition']) && $this->condition!==$criteria['condition'])
{
if($this->condition==='')
$this->condition=$criteria['condition'];
elseif($criteria['condition']!=='')
$this->condition="({$this->condition}) AND ({$criteria['condition']})";
}
if(isset($criteria['params']) && $this->params!==$criteria['params'])
$this->params=array_merge($this->params,$criteria['params']);
if(isset($criteria['order']) && $this->order!==$criteria['order'])
{
if($this->order==='')
$this->order=$criteria['order'];
elseif($criteria['order']!=='')
$this->order=$criteria['order'].', '.$this->order;
}
if(isset($criteria['group']) && $this->group!==$criteria['group'])
{
if($this->group==='')
$this->group=$criteria['group'];
elseif($criteria['group']!=='')
$this->group.=', '.$criteria['group'];
}
if(isset($criteria['join']) && $this->join!==$criteria['join'])
{
if($this->join==='')
$this->join=$criteria['join'];
elseif($criteria['join']!=='')
$this->join.=' '.$criteria['join'];
}
if(isset($criteria['having']) && $this->having!==$criteria['having'])
{
if($this->having==='')
$this->having=$criteria['having'];
elseif($criteria['having']!=='')
$this->having="({$this->having}) AND ({$criteria['having']})";
}
}
Объединяет это отношение с динамически заданными критериями.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CBaseActiveRelation