algo-web/podata-laravel

从 Laravel 暴露 Odata 服务

0.3.6 2020-02-22 11:18 UTC

This package is auto-updated.

Last update: 2024-08-29 04:31:10 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功能

  • 已停止支持 PHP 5.6 *

要安装,运行

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,

然后,将特质添加到您想暴露的模型中。

    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' 映射到底层模型的主键
  • 假设已使用 composer -o dump-autoload 优化了自动加载器。

-- 配置选项 -- 这些需要放入 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