Skip to content

latevaweb/laravel-query-updater

Repository files navigation

Build Eloquent update queries from put API requests

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

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.

About

Easily build Eloquent update queries from API requests

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages