Красноречивая Макро Модель с Laravel

Я пытаюсь установить скрытые атрибуты в модели Eloquent в зависимости от типа роли. Например, макрос, который я написал ниже, адаптирует модели в коллекции, чтобы скрыть поля для данной роли.

Collection::macro('roleRestrict', function () {
switch (true) {
case RoleChecker::isUserGuest():
return $this->map(function (AuthorisedAttributeInterface $model) {
$model->setGuestRoleHiddenFields();
return $model;
});
default:
return $this;
}
});

Который может быть использован с MyModel::all()->roleRestrict()

Можно ли написать подобный макрос, который применяется к одному объекту модели вне коллекции? Это будет выполнено следующим образом:

MyModel::findOrFail($id)->roleRestrict()

Или даже если модель загружена с отношением ownTo:

AnotherModel::with('myModelRelationship')->findOrFail($id)->roleRestrict()

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]