Я бы всё это дело обернул в человекопонятный
DSL:
$user->likes($entity);
.
А уже внутри метода likes() создаётся объект Like, в который передаётся лайкнутая сущность (ну и пользователь, разумеется) и там внутри уже разруливается конкретное поле, которое нужно заполнить. Инкапсуляция, полиморфизм, все дела.
Те же яйца, только сбоку:
$entity->likedBy($user)
.
Если в качестве источника действия установить пользователя, то можно будет написать вдобавок
$user->noLongerLikes($entity)
, чтобы снять лайк. При другой организации DSL получится страшненький.
P.S. Лучше оперировать целыми объектами, а не передавать туда-сюда id. Это позволит и код кое-где упростить и тайпхинты расставить.