latevaweb / laravel-query-updater
Easily update Eloquent models from put API requests without losing data
Installs: 1 151
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 2
Open Issues: 3
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-03-05 11:27:46 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.