bgoak / podata-laravel

从 Laravel 暴露 Odata 服务

0.3.5 2018-07-17 13:22 UTC

This package is auto-updated.

Last update: 2024-09-08 00:47:45 UTC


README

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

POData-Laravel

Composer 包,为 Laravel 提供Odata功能。

支持 Laravel 5.7,因为 Laravel 5.1 的 PostgreSQL 支持已损坏。

要安装,请运行

composer require algo-web/podata-laravel

编辑 config/app.php 并在 providers 部分添加以下内容

AlgoWeb\PODataLaravel\Providers\MetadataProvider::class,
AlgoWeb\PODataLaravel\Providers\MetadataRouteProvider::class,
AlgoWeb\PODataLaravel\Providers\QueryProvider::class,
AlgoWeb\PODataLaravel\Providers\MetadataControllerProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,

然后将该特性添加到您想公开的模型中。

    use \AlgoWeb\PODataLaravel\Models\MetadataTrait;

默认情况下,遵循 Laravel 的约定,POData-Laravel 将模型名称复数化以用作端点。这是 POData-Laravel 的实现选择,而不是 OData 本身的内在特性。

例如,对于 User 模型,其他条件相同

    /odata.svc/Users

如果您刚刚安装了该包并且无法访问模型端点,请尝试在项目中的 .env 文件中临时设置 APP_DISABLE_AUTH=true,然后再尝试访问这些端点。

– 已知限制 –

  • 不能在不同的命名空间中公开具有相同类名的两个模型 - 尝试公开 App\Foo\Model 和 App\Bar\Model 将会引发异常,指出资源集已添加。
  • 可以通过为冲突的模型之一设置自定义端点名称来解决这个问题。
  • 控制器输入参数将 'id' 映射到底层模型的主键

– 配置选项 – 这些需要放入 Laravel 项目的 .env 文件中。

  • APP_METADATA_CACHING - 是否启用模型元数据缓存
  • APP_METADATA_CACHE_DURATION - 如果缓存,保留缓存元数据的时间(以分钟为单位)
  • APP_DISABLE_AUTH - 禁用身份验证(布尔值)
  • APP_DRY_RUN - 无条件回滚数据库更改(布尔值)

贡献

有关详细信息,请参阅 CONTRIBUTING.md。

支持的功能

(感谢 @renanwilliam 提供此列表的初始版本)

  • 完整的 CRUD 支持
  • $count
  • $filter
    • 比较运算符
      • eq
      • ne
      • lt
      • le
      • gt
      • ge
    • 逻辑运算符
      • and
      • or
      • not
    • 比较运算符
      • has
    • 字符串函数
      • indexof
      • contains
      • endswith
      • startswith
      • length
      • substring
      • tolower
      • toupper
      • trim
      • concat
    • 算术运算符
      • add
      • sub
      • mul
      • div
      • mod
    • 日期函数
      • year
      • month
      • day
      • hour
      • minute
      • second
      • fractionalseconds
      • date
      • time
      • totaloffsetminutes
      • now
      • mindatetime
      • maxdatetime
    • 数学函数
      • round
      • floor
      • ceiling
  • $select
  • $top
  • $skip
  • $skiptoken
  • $orderby
  • $expand

$filter 下的功能目前依赖于已弃用的 PHP 7.2 功能 create_function。