latevaweb/laravel-query-updater

轻松更新 Eloquent 模型,从 put API 请求中获取数据而不会丢失数据

0.1.5 2024-08-05 09:17 UTC

README

Quality Score Code Coverage Build Status StyleCI License: MIT Laravel 6.x

此包允许您根据请求更新字段和关系,而不会丢失未发送的数据。

安装

此包可在 Laravel 6.0 或更高版本中使用。

您可以通过 composer 安装此包

composer require latevaweb/laravel-query-updater

服务提供者将自动注册。或者您也可以在 config/app.php 文件中手动添加服务提供者

'providers' => [
    // ...
    LaTevaWeb\QueryUpdater\QueryUpdaterServiceProvider::class,
];

基本用法

根据 putpatch 请求更新模型字段:/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
}

扩展过滤器

如果您有特殊要求,不符合我们的过滤器 KeepStoredSimpleFilter,您可以创建自己的扩展 LaTevaWeb\QueryUpdater\Filter\AbstractFilter 类。

运行测试

需要 sqlite。在 ubuntu 上使用 sudo apt-get install php7.4-sqlite3 安装。

执行 vendor/bin/phpunit

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件