(Тостер тоже глючит)используйте теги, в данном случае код html, они там в редакторе не просто для красоты.
$author1->load(Yii::$app->request->post());
var_dump($autor1);
$author2 = ArticleAuthor::findOne(['id' => $id]);
var_dump($autor2);
public static function setUnitsЭто хэлпер? Или модель? Если хелпер, то подобная лапша местами неизбежна. Если это модель - во превых какого там делает статический метод, во вторых, при наличии инициализации объекта(через конструктор или функции инициализации) можно(и нужно) разбить код на более простые универсальные методы, и уже их вызывать, например $this->start(); $this->finish(); и в этих методах активно оперировать внутренними свойствами объекта($this->clientDestination и тд).
в теории не есть хорошо переносить да и просто дублировать в отдельных таблицах. ибо все данные уже есть в одной общей.Вопрос нормализации/денормализации. В теории с нормальными формами все зашибись и красиво, на практике объемы выборки вносят свои коррективы. Денормализацию не от хорошей жизни используют, как раз случай как у вас, искусство построения хайлоад, в частности, найти что можно дешево денормализовать с минимальными потерями консистентности. Тот же редис и иже с ними - денормализация в чистом виде - дублирование и ускорение за счет консистентности хранимых данных. Так что - выносить без вопросов, счетчики же у вас не идут никуда в хранение - только промежуточно выносятся с каким-то интервалом в отдельную таблицу. Нарушения связей не происходит, только незначительное дублирование, это приемлемо.
$user->initByArray($_POST);
на продакшене в ничего так себе конторе.