Laravel Eloquent: повторное использование модели и сбор ресурсов

API использует функцию сбора ресурсов Laravel для предоставления ответа JSON клиенту. Как обращаться со структурой кодирования приложения при наличии сложной логики приложения.
Вот класс Model. BookTransaction модель имеет type флаг, чтобы различить, является ли запись заимствованием (b) или возвратом (r).

class Member extends Model
{
     protected $table = 'lms_members';

     protected $primaryKey = 'member_id';

     protected $guarded = ['member_id'];

     public function user()
     {
          return $this->belongsTo('User');
     }

     public function transactions()
     {
          return $this->hasMany(BookTransaction::class, 'member_id', 'member_id');
     }  
}

Ресурс и коллекция ресурсов:

class Member extends JsonResource
{
    public function toArray($request)
    {
        return [
            'member_id'     => $this->member_id,
            'user_id'       => $this->user_id,
            'name'          => $this->name,
            'joined_date'   => $this->joined_date,
            'barcode'       => $this->barcode,
            'rfid'          => $this->rfid,
            'image'         => $this->image,
            'remark'        => $this->remark,
            'user'          => $this->whenLoaded('user'),        
        ];
    }
}
class MemberCollection extends ResourceCollection
{
    public function toArray($request)
    {
        return [
            'data' => $this->collection,
            'meta' => [
               'result_count' => $this->collection->count(),
            ]
        ];
    }
}

Цель состоит в том, чтобы использовать класс Resource для создания ответа для данных, который будет включать в себя больше атрибутов, чем описанный.
Например, если нужно создать членов с общим количеством заимствований, общим количеством возвращаемых и разницей между двумя, как это СУХОЙ?

0 ответов

Другие вопросы по тегам