Laravel Eloquent: повторное использование модели и сбор ресурсов - PullRequest
0 голосов
/ 16 января 2019

API использует функцию Laravel Resource Collection для предоставления ответа 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 для создания ответа для данных, который будет включать в себя больше атрибутов, чем описанный.
Например, если это будет создание элементов с общим количеством заимствований, общим количеством возвращаемых и разницей между двумя, как СУШИТЬ это?

...