Настраиваете сервер, так что бы все запросы, в том числе с подоменов шли в index.php (стандартная точка входа, как и в обычном проекте yii) где запускается yii.
Далее 2 варианта. То что Rules with Server Names хорош если контролеры разные для каждого поддомена и т.п., но в Вашем случае я так понимаю, нужно иметь грубо говоря school_id. Все идентично, для всех школ те же контролеры и экшены, но местами school_id, который видимо и есть поддоменом вносит кастом.
Я не пробовал такое, но теоретически можно просто сделать alias, например в
common\config\bootstrap.php добавить что-то типа:
Yii::setAlias('@school', $_SERVER['SERVER_NAME']);
только предварительно проверив, что отдает
$_SERVER['SERVER_NAME']
, там в зависимости от настроек сервера может быть много неожиданностей
Ну и потом юзать напримеp:
public function getPrepod(){
return $this->hasOne(Prepod:classname, ['id'=>'prepod_id'])->andWhere(['school_id'=>Yii::getAlias('@school')]);
}
Но повторюсь не пробовал.