This package allows you to update fields and relations based on a request without losing data not send.
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,
];
use LaTevaWeb\QueryUpdater\QueryUpdater;
public function __invoke(Request $request, User $user) {
QueryUpdater::for($user)
->updatedFields(['name'])
->save();
// update
}
use LaTevaWeb\QueryUpdater\QueryUpdater;
use LaTevaWeb\QueryUpdater\KeepStored;
public function __invoke(Request $request, User $user) {
QueryUpdater::for($user)
->updatedFields([
KeepStored::field('name')
])
->save();
// update
}
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.
sqlite is required. Install it on ubuntu using sudo apt-get install php7.4-sqlite3
.
execute vendor/bin/phpunit
The MIT License (MIT). Please see License File for more information.