*/ abstract class BaseRepository implements BaseRepositoryInterface { /** * @param T $model */ public function __construct(protected Model $model) {} /** * @param array $filters * @return LengthAwarePaginator */ public function paginate(array $filters = [], int $perPage = 15): LengthAwarePaginator { return $this->model->newQuery()->latest()->paginate($perPage); } /** * @return T|null */ public function findById(int $id): ?Model { return $this->model->newQuery()->find($id); } /** * @param array $data * @return T */ public function create(array $data): Model { return $this->model->newQuery()->create($data); } /** * @param array $data * @return T */ public function update(Model $model, array $data): Model { $model->update($data); return $model->fresh(); } public function delete(Model $model): bool { return $model->delete(); } }