PankovAlxndr
@PankovAlxndr
Fullstack web developer

Как добавить новые свойства в API Resource Laravel?

Здравствуйте, подскажите как сделать следующие:
  • у меня есть сущность, например user и у нее какие-то свойства (name, last_name ...) эти свойства - это колонки таблицы users
  • мне нужно отдать на api запрос какого-то user'a и для этого я возвращаю из контроллера UserResource, где в методе toArray описываю как должен выглядеть ответ (мапинг свойств сущности)
  • а что делать, если мне к этому ответу нужно кое что добавить, конкретно сейчас, у меня есть редис и в нем некая информация с TTL, вот ее я и хочу отдать в ответ, те на ряду с name, last_name ... должны быть доп.поля мои, которые НЕ являются свойствами сущности (модели user), конкретно у меня там коды подтверждения c ttl в 5 минут, если в редисе они есть, мне надо их показать (комменты на примере)

как такое сделать, как "прокинуть сторонние данные" в ресурс?
/** @mixin \App\Models\User */
class UserResource extends JsonResource
{
    /**
     * @param  Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'first_name' => $this->first_name,
            'last_name' => $this->last_name,
            'email' => $this->email,
            'phone' => $this->phone,
            'phone_pretty' => $this->phone,
            'email_verified_at' => $this->email_verified_at,
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at,

//            'redis_balance' => ...,
//            'redis_code'=> ....
//            'redis_ttl'=> ....
        ];
    }
}

Пробовал с $resource->additional(...), но он просто добавляет данные к ответу (array_push)
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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