Задать вопрос
@Myma

Динамическая связь в Yii2. Как сделать?

Пришла мне такая "гениальная" идея как одна таблица логов на весь проект и чтобы не плодить столбцы, я решил сделать 2 столбца по которым можно понять к какой записи относится лог: id названия класса модели и id модели, таким образом по задумке я могу бы выбрать логи с динамической связью:

public function getDynamicRelation()
    {
        return $this->hasOne($this->modelName->model_name, ['id' => 'model_id']);
    }


Разумеется все это работает кривовато (но тем не менее работает) и такое ощущение что на каждом следующем этапе разработки нужно будет городить новые костыли. Собственно вопрос, как лучше это реализовать? Все таки правильней добавить на связь по столбцу и каждый раз когда у меня появляется новая модель, то модернизировать таблицу? Или может на каждую новую модель нужно отдельную таблицу логов к ней? Как мне тогда вывести список логов (хотелось что-то вроде 'dynamicRelation.moreDetails', в GridView), но я же не знаю что за связь будет у лога заранее.
Как вариант я добавил к getDynamicRelation
->cache(600);
И запросов стало меньше.
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы