lexxsoft/odata

Laravel OData request parser

Maintainers

Package info

github.com/lexxyar/odata

pkg:composer/lexxsoft/odata

Transparency log

Statistics

Installs: 74

Dependents: 0

Suggesters: 0

Stars: 4

Open Issues: 0

2.0.1 2026-08-08 07:45 UTC

README

Latest Stable Version GitHub Package validation status PHP Version Require License Total Downloads

Contents

Installation

Requirements

Component Version
PHP 8.1
Laravel 13

Setup

composer require lexxsoft/odata

Controller example

...
use Lexxsoft\Odata\RequestQuery;
...

public function index(Request $request): AnonymousResourceCollection
    {
        $requestQuery = RequestQuery::make();
        $perPage = $requestQuery->limit > 0 ? $requestQuery->limit : 10;
        $builder = $requestQuery->noLimit()->builder(App::make(Document::class));
        if (!$requestQuery->hasOrder()) {
            $builder = $builder->orderBy('created_at', 'desc');
        }
        if ($requestQuery->search !== '') {
            $builder = $builder->where('name', 'like', '%' . $requestQuery->search . '%');
        }
        if (isset($request->period)) {
            $startFrom = now()->subtract($request->period . ' days');
            $builder = $builder->where('created_at', '>=', $startFrom->format('Y-m-d'));
        }
        $docs = $builder->where('created_by', Auth::id())
            ->paginate($perPage)
            ->withQueryString();

        return DocumentResource::collection($docs);
    }