Spec-Zone.ru › Yii 1.1

CActiveFinder

Пакет system.db.ar
Наследование класс CActiveFinder » CComponent
С версии 1.0
Исходный код framework/db/ar/CActiveFinder.php
CActiveFinder реализует жадное и ленивое загрузку связанных активных записей.

При использовании в жадной загрузке, этот класс предоставляет тот же набор методов поиска, что и CActiveRecord.

Свойства общедоступные

Свойство Тип Описание Определено в
baseLimited boolean указывает, имеет ли базовая модель ограничение или смещение. CActiveFinder
joinAll boolean объединить все таблицы сразу. CActiveFinder

Методы общедоступные

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CActiveFinder
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик события к событию. CComponent
canGetProperty() Определяет, можно ли читать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
count() Этот метод вызывается внутренне. CActiveFinder
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик события. CComponent
disableBehavior() Отключает присоединенное поведение. CComponent
disableBehaviors() Отключает все присоединенные поведения этого компонента. CComponent
enableBehavior() Включает присоединенное поведение. CComponent
enableBehaviors() Включает все присоединенные поведения этого компонента. CComponent
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
findAllBySql() Этот метод вызывается внутренне. CActiveFinder
findBySql() Этот метод вызывается внутренне. CActiveFinder
getEventHandlers() Возвращает список присоединенных обработчиков событий для события. CComponent
getModel() Принимая имя класса активной записи, возвращает новый экземпляр модели. CActiveFinder
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, имеет ли именованное событие присоединенные обработчики. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
lazyFind() Находит связанные объекты для указанной активной записи. CActiveFinder
query() Не вызывайте этот метод. Этот метод используется внутренне для выполнения реляционного запроса CActiveFinder
raiseEvent() Вызывает событие. CComponent

Подробное описание свойств

baseLimited свойство

public boolean $baseLimited;

указывает, имеет ли базовая модель ограничение или смещение. Это свойство используется внутренне.

joinAll свойство

public boolean $joinAll;

объединить все таблицы сразу. По умолчанию false. Это свойство используется внутренне.

Подробное описание методов

__construct() метод

public void __construct(CActiveRecord $model, mixed $with)
$model CActiveRecord модель, которая инициирует процесс активного поиска
$with mixed имена отношений, которые нужно активно искать
Исходный код: framework/db/ar/CActiveFinder.php#44 (показать)
public function __construct($model,$with)
{
    
$this->_builder=$model->getCommandBuilder();
    
$this->_joinTree=new CJoinElement($this,$model);
    
$this->buildJoinTree($this->_joinTree,$with);
}

Конструктор. Дерево объединений строится на основе объявленных отношений между классами активных записей.

count() метод

public string count(CDbCriteria $criteria)
$criteria CDbCriteria критерии запроса
{return} string
Исходный код: framework/db/ar/CActiveFinder.php#142 (показать)
public function count($criteria)
{
    
Yii::trace(get_class($this->_joinTree->model).'.count() eagerly','system.db.ar.CActiveRecord');
    
$this->joinAll=$criteria->together!==true;

    
$alias=$criteria->alias===null ? 't' : $criteria->alias;
    
$this->_joinTree->tableAlias=$alias;
    
$this->_joinTree->rawTableAlias=$this->_builder->getSchema()->quoteTableName($alias);

    
$n=$this->_joinTree->count($criteria);
    
$this->destroyJoinTree();
    return 
$n;
}

Этот метод вызывается внутренне.

findAllBySql() метод

public CActiveRecord[] findAllBySql(string $sql, array $params=array ( ))
$sql string SQL-запрос
$params array параметры, которые нужно привязать к SQL-запросу
{return} CActiveRecord[]
Исходный код: framework/db/ar/CActiveFinder.php#119 (показать)
public function findAllBySql($sql,$params=array())
{
    
Yii::trace(get_class($this->_joinTree->model).'.findAllBySql() eagerly','system.db.ar.CActiveRecord');
    if((
$rows=$this->_builder->createSqlCommand($sql,$params)->queryAll())!==array())
    {
        
$baseRecords=$this->_joinTree->model->populateRecords($rows,false);
        
$this->_joinTree->findWithBase($baseRecords);
        
$this->_joinTree->afterFind();
        
$this->destroyJoinTree();
        return 
$baseRecords;
    }
    else
    {
        
$this->destroyJoinTree();
        return array();
    }
}

Этот метод вызывается внутренне.

findBySql() метод

public CActiveRecord findBySql(string $sql, array $params=array ( ))
$sql string SQL-запрос
$params array параметры, которые нужно привязать к SQL-запросу
{return} CActiveRecord
Исходный код: framework/db/ar/CActiveFinder.php#98 (показать)
public function findBySql($sql,$params=array())
{
    
Yii::trace(get_class($this->_joinTree->model).'.findBySql() eagerly','system.db.ar.CActiveRecord');
    if((
$row=$this->_builder->createSqlCommand($sql,$params)->queryRow())!==false)
    {
        
$baseRecord=$this->_joinTree->model->populateRecord($row,false);
        
$this->_joinTree->findWithBase($baseRecord);
        
$this->_joinTree->afterFind();
        
$this->destroyJoinTree();
        return 
$baseRecord;
    }
    else
        
$this->destroyJoinTree();
}

Этот метод вызывается внутри компонента.

getModel() метод (доступен начиная с v1.1.14)

public CActiveRecord getModel(string $className)
$className string имя класса активной записи
{return} CActiveRecord экземпляр модели активной записи
Исходный код: framework/db/ar/CActiveFinder.php#180 (показать)
public function getModel($className)
{
    return 
CActiveRecord::model($className);
}

Возвращает новый экземпляр модели на основе имени класса активной записи.

lazyFind() метод

public void lazyFind(CActiveRecord $baseRecord)
$baseRecord CActiveRecord базовая запись, связанные объекты которой необходимо загрузить
Исходный код: framework/db/ar/CActiveFinder.php#161 (показать)
public function lazyFind($baseRecord)
{
    
$this->_joinTree->lazyFind($baseRecord);
    if(!empty(
$this->_joinTree->children))
    {
        foreach(
$this->_joinTree->children as $child)
            
$child->afterFind();
    }
    
$this->destroyJoinTree();
}

Ищет связанные объекты для указанной активной записи. Этот метод вызывается внутри CActiveRecord для поддержки ленивой загрузки.

query() метод

public mixed query(CDbCriteria $criteria, boolean $all=false)
$criteria CDbCriteria критерии базы данных
$all boolean признак, указывает нужно ли возвратить все записи
{return} смешанный тип результат запроса
Исходный код: framework/db/ar/CActiveFinder.php#58 (показать)
public function query($criteria,$all=false)
{
    
$this->joinAll=$criteria->together===true;

    if(
$criteria->alias!='')
    {
        
$this->_joinTree->tableAlias=$criteria->alias;
        
$this->_joinTree->rawTableAlias=$this->_builder->getSchema()->quoteTableName($criteria->alias);
    }

    
$this->_joinTree->find($criteria);
    
$this->_joinTree->afterFind();

    if(
$all)
    {
        
$result = array_values($this->_joinTree->records);
        if (
$criteria->index!==null)
        {
            
$index=$criteria->index;
            
$array=array();
            foreach(
$result as $object)
                
$array[$object->$index]=$object;
            
$result=$array;
        }
    }
    elseif(
count($this->_joinTree->records))
        
$result = reset($this->_joinTree->records);
    else
        
$result = null;

    
$this->destroyJoinTree();
    return 
$result;
}

Не вызывать этот метод. Этот метод используется внутри компонента для выполнения реляционного запроса на основе заданных критериев базы данных.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CActiveFinder

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API