'through' создает связь между двумя таблицами, которые связаны не внешними ключами, а средней таблицей.Например, давайте представим, что у меня есть 3 модели: группы, пользователи и комментарии.Отношения будут такими:
Группы --- (hasMany) ---> Пользователи ---- (hasMany) -----> Комментарии.
Группы и комментариине связанные внешним ключом, но с использованием «через» они будут действовать так, как если бы они были.Это, конечно, означает, что мы можем пользоваться всеми преимуществами AR в реляционных запросах.Например, вы можете получить все комментарии пользователей, принадлежащих к определенной группе, просто:
$group->comments;
Здесь вы можете найти более подробное (но, возможно, немного более техническое) объяснение: http://www.yiiframework.com/doc/guide/1.1/en/database.arr
Так же, как совет, я настоятельно рекомендую использовать нетерпеливую загрузку здесь.Объяснить причину этого немного сложно, но если вы используете его, вы избегаете AR для выполнения экспоненциального числа запросов на соединение.