latevaweb / laravel-query-updater
轻松更新 Eloquent 模型,从 put API 请求中获取数据而不会丢失数据
0.1.5
2024-08-05 09:17 UTC
Requires
- php: ^7.3|^8.2|^8.3
- illuminate/http: ^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- ext-json: *
- orchestra/testbench: ^4.0|^5.0
- phpunit/phpunit: ^7.0|^8.0|^9.0|^10.0
This package is auto-updated.
Last update: 2024-09-05 10:30:42 UTC
README
此包允许您根据请求更新字段和关系,而不会丢失未发送的数据。
安装
此包可在 Laravel 6.0 或更高版本中使用。
您可以通过 composer 安装此包
composer require latevaweb/laravel-query-updater
服务提供者将自动注册。或者您也可以在 config/app.php 文件中手动添加服务提供者
'providers' => [ // ... LaTevaWeb\QueryUpdater\QueryUpdaterServiceProvider::class, ];
基本用法
根据 put
或 patch
请求更新模型字段:/users
参数:['name' => 'Marc']
use LaTevaWeb\QueryUpdater\QueryUpdater; public function __invoke(Request $request, User $user) { QueryUpdater::for($user) ->updatedFields(['name']) ->save(); // update }
更新模型字段,但若参数为空或为 null,则保留存储的值
use LaTevaWeb\QueryUpdater\QueryUpdater; use LaTevaWeb\QueryUpdater\KeepStored; public function __invoke(Request $request, User $user) { QueryUpdater::for($user) ->updatedFields([ KeepStored::field('name') ]) ->save(); // update }
扩展过滤器
如果您有特殊要求,不符合我们的过滤器 KeepStored
或 SimpleFilter
,您可以创建自己的扩展 LaTevaWeb\QueryUpdater\Filter\AbstractFilter
类。
运行测试
需要 sqlite。在 ubuntu 上使用 sudo apt-get install php7.4-sqlite3
安装。
执行 vendor/bin/phpunit
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。