bgoak / podata-laravel
从 Laravel 暴露 Odata 服务
0.3.5
2018-07-17 13:22 UTC
Requires
- php: >=5.6.4
- algo-web/podata: 0.3.*|dev-master
- doctrine/dbal: ^2.5
- illuminate/http: >=5.1.11
- laravel/framework: >=5.1.11
- symfony/yaml: ^2.7|^3.0|^4.0
- voku/anti-xss: 2.1.*
Requires (Dev)
- mockery/mockery: dev-master
- orchestra/testbench: ~3.0
- php-coveralls/php-coveralls: >=v2.1
- phpunit/phpunit: ^5.6|^6.0|^7.0
README
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。