Стремительный подход загрузки извлекает связанные экземпляры AR вместе с основными экземплярами AR. Это достигается с помощью метода with () вместе с одним из методов find или findAll в AR. Например,
$posts=Post::model()->with('author')->findAll();
Приведенный выше код вернет массив экземпляров Post. В отличие от ленивого подхода, свойство author в каждом экземпляре Post уже заполняется связанным экземпляром User, прежде чем мы получим доступ к свойству. Вместо того, чтобы выполнять запрос на соединение для каждого поста, подход к быстрой загрузке возвращает все посты вместе с их авторами в один запрос на объединение!
Мы можем указать несколько имен отношений в методе with (), и подход к быстрой загрузке вернет их всех за один раз. Например, следующий код вернет сообщения вместе с их авторами и категориями:
$posts=Post::model()->with('author','categories')->findAll();
Мы также можем выполнять вложенную загрузку. Вместо списка имен отношений мы передаем иерархическое представление имен отношений методу with (), как показано ниже:
$posts=Post::model()->with(
'author.profile',
'author.posts',
'categories')->findAll();
Приведенный выше пример вернет все сообщения вместе с их автором и категориями. Он также вернет профиль и сообщения каждого автора.
Стремительную загрузку также можно выполнить, указав свойство CDbCriteria :: with, например:
$criteria=new CDbCriteria;
$criteria->with=array(
'author.profile',
'author.posts',
'categories',
);
$posts=Post::model()->findAll($criteria);
или
$posts=Post::model()->findAll(array(
'with'=>array(
'author.profile',
'author.posts',
'categories',
)
);