Я сталкивался с той же проблемой в прошлом. Я решил это, используя вашу онтологию, с помощью статического метода в таблице действий, вызов был что-то вроде:
Activity::addNew($favouriteID, Activity::FAVOURITE);
и да, это выглядит неестественно.
Боюсь, вы говорите об аспектной ориентации ...
Еще один способ сделать это (но не выбрал его по другим причинам) - добавить триггер в базу данных, который заполнит
активность, каждый раз, когда был добавлен любимый. Я не хотел идти туда, потому что это преувеличено в литературе, что вскоре вызывает
выйти из-под контроля. Это зависит от того, сколько логики приложения вы хотите иметь на уровне базы данных ...