Algo-Web / POData-Laravel by c-harris

Expose Odata services from laravel
3,181
34
4
Package Data
Maintainer Username: c-harris
Package Create Date: 2016-10-30
Package Last Update: 2020-06-01
Language: PHP
License: MIT
Last Refreshed: 2024-12-20 03:02:48
Package Statistics
Total Downloads: 3,181
Monthly Downloads: 1
Daily Downloads: 0
Total Stars: 34
Total Watchers: 4
Total Forks: 29
Total Open Issues: 12

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

POData-Laravel

Composer Package to provide Odata functionality to Laravel

To install, run

composer require algo-web/podata-laravel

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

AlgoWeb\PODataLaravel\Providers\MetadataProvider::class,
AlgoWeb\PODataLaravel\Providers\MetadataRouteProvider::class,
AlgoWeb\PODataLaravel\Providers\QueryProvider::class,
AlgoWeb\PODataLaravel\Providers\MetadataControllerProvider::class,

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:

    /odata.svc/Users

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

-- 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)

Contributing

See CONTRIBUTING.md for the details.

Features Supported

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

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

The capabilities under $filter currently rely on the deprecated-in-PHP-7.2 create_function capability.