latevaweb / laravel-query-updater
Easily update Eloquent models from put API requests without losing data
Installs: 1 171
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 2
Open Issues: 3
pkg:composer/latevaweb/laravel-query-updater
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: 2025-10-05 12:49:18 UTC
README
This package allows you to update fields and relations based on a request without losing data not send.
Installation
This package can be used in Laravel 6.0 or higher.
You can install the package via composer:
composer require latevaweb/laravel-query-updater
The service provider will automatically get registered. Or you may manually add the service provider in your config/app.php file:
'providers' => [ // ... LaTevaWeb\QueryUpdater\QueryUpdaterServiceProvider::class, ];
Basic usage
Update model field based on a put or patch request: /users params: ['name' => 'Marc']:
use LaTevaWeb\QueryUpdater\QueryUpdater; public function __invoke(Request $request, User $user) { QueryUpdater::for($user) ->updatedFields(['name']) ->save(); // update }
Update model field but keep stored value if parameter is empty or 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 }
Extending filters
IF you have an special requirement that not fits with our filters KeepStored or SimpleFilter,
you can create your own extending LaTevaWeb\QueryUpdater\Filter\AbstractFilter class.
Run tests
sqlite is required. Install it on ubuntu using sudo apt-get install php7.4-sqlite3.
execute vendor/bin/phpunit
License
The MIT License (MIT). Please see License File for more information.