Что будет, если делать рекурсивный вызов $activeQuery->joinWith ? То есть вызывать joinWith внутри Closure, которое передано как $activeQuery->joinWith([$name=> Closure]).
Я тестировал, и внутренние вызовы $query->joinWith не работают. По идее все они должны участвовать в генерации итогового запроса.
Пример:
Код: Выделить всё
// это линия $relations доступных в основной модели Profile
// finances.currency.eps
$activeQuery = Profile::find();
$activeQuery->joinWith([ 'finances' => function($query) {
\Yii::trace($query->modelClass);
$query->joinWith([ 'currency' => function($query) {
\Yii::trace($query->modelClass);
$query->joinWith([ 'eps' => function($query) {
\Yii::trace($query->modelClass);
} ], false);
} ], false);
} ], false);