CActiveFinder
| Пакет | system.db.ar |
|---|---|
| Наследование | класс CActiveFinder » CComponent |
| С версии | 1.0 |
| Исходный код | framework/db/ar/CActiveFinder.php |
При использовании в жадной загрузке, этот класс предоставляет тот же набор методов поиска, что и 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 | имена отношений, которые нужно активно искать |
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 | |
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[] | |
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 | |
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 | экземпляр модели активной записи |
public function getModel($className)
{
return CActiveRecord::model($className);
}
Возвращает новый экземпляр модели на основе имени класса активной записи.
lazyFind() метод
public void lazyFind(CActiveRecord $baseRecord) | ||
| $baseRecord | CActiveRecord | базовая запись, связанные объекты которой необходимо загрузить |
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} | смешанный тип | результат запроса |
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