Expose Odata services from laravel

0.3.6 2020-02-22 11:18 UTC

This package is auto-updated.

Last update: 2021-08-29 01:53:55 UTC


Build Status Scrutinizer Code Quality Coverage Status Latest Stable Version Latest Unstable Version Total Downloads Monthly Downloads Daily Downloads


Composer Package to provide Odata functionality to Laravel

  • PHP 5.6 support has been dropped *

To install, run

composer require algo-web/podata-laravel

Edit config/app.php and add this to providers section:


You then add the trait to the models you want to expose.

    use \AlgoWeb\PODataLaravel\Models\MetadataTrait;

By default, following Laravel convention, POData-Laravel pluralises the model names to use as endpoints. That's an implementation choice in POData-Laravel, not anything intrinsic to OData itself.

Eg, for User model, all else equal:


If you have just installed the package and have trouble reaching your models' endpoints, try setting APP_DISABLE_AUTH=true in your project's .env file temporarily, and then try reaching those endpoints again.

-- Known Limitations --

  • Cannot expose two models with the same class name in different namespaces - trying to expose both App\Foo\Model and App\Bar\Model will trip an exception complaining that resource set has already been added.
  • This can be worked around by setting a custom endpoint name on one of the colliding models.
  • Controller input parameters map 'id' to underlying model's primary key
  • Assumes autoloader has been optimised with composer -o dump-autoload.

-- Configuration options -- These need to go in your Laravel project's .env file.

  • APP_METADATA_CACHING - Whether or not to turn model metadata caching on
  • APP_METADATA_CACHE_DURATION - If caching, how long (in minutes) to retain cached metadata
  • APP_DISABLE_AUTH - Disable authentication (boolean)
  • APP_DRY_RUN - Roll back DB changes unconditionally (boolean)


See for the details.

Features Supported

(thanks to @renanwilliam for the initial version of this list)

  • Full CRUD Support
  • $count
  • $filter
    • Comparison Operators
      • eq
      • ne
      • lt
      • le
      • gt
      • ge
    • Logical Operators
      • and
      • or
      • not
    • Comparison Operators
      • has
    • String Functions
      • indexof
      • contains
      • endswith
      • startswith
      • length
      • substring
      • tolower
      • toupper
      • trim
      • concat
    • Arithmetic Operators
      • add
      • sub
      • mul
      • div
      • mod
    • Date Functions
      • year
      • month
      • day
      • hour
      • minute
      • second
      • fractionalseconds
      • date
      • time
      • totaloffsetminutes
      • now
      • mindatetime
      • maxdatetime
    • Math Functions
      • round
      • floor
      • ceiling
  • $select
  • $top
  • $skip
  • $skiptoken
  • $orderby
  • $expand