Пришла мне такая "гениальная" идея как одна таблица логов на весь проект и чтобы не плодить столбцы, я решил сделать 2 столбца по которым можно понять к какой записи относится лог: id названия класса модели и id модели, таким образом по задумке я могу бы выбрать логи с динамической связью:
public function getDynamicRelation()
{
return $this->hasOne($this->modelName->model_name, ['id' => 'model_id']);
}
Разумеется все это работает кривовато (но тем не менее работает) и такое ощущение что на каждом следующем этапе разработки нужно будет городить новые костыли. Собственно вопрос, как лучше это реализовать? Все таки правильней добавить на связь по столбцу и каждый раз когда у меня появляется новая модель, то модернизировать таблицу? Или может на каждую новую модель нужно отдельную таблицу логов к ней? Как мне тогда вывести список логов (хотелось что-то вроде 'dynamicRelation.moreDetails', в GridView), но я же не знаю что за связь будет у лога заранее.
Как вариант я добавил к getDynamicRelation
->cache(600);
И запросов стало меньше.