Build Eloquent update queries from put API requests
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
put
or patch
request: /users
params: ['name' => 'Marc']
:
Update model field based on a 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.