latevaweb/laravel-query-updater

Easily update Eloquent models from put API requests without losing data
1,201
Install
composer require latevaweb/laravel-query-updater
Latest Version:0.1.5
PHP:^7.3|^8.2|^8.3
License:MIT
Last Updated:Aug 5, 2024
Links: GitHub  ·  Packagist
Maintainer: LaTevaWeb

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.

Related Packages

threesquared/laravel-wp-api

Laravel package for the Wordpress JSON REST API

10,364 13
sdv/laravel-endpoint

Laravel Endpoint is a CRUD REST API package for Laravel.

18,791 11
pixelpeter/laravel5-woocommerce-api-client

Laravel 5 wrapper for the Woocommerce REST API

106,676 123
marcelgwerder/laravel-api-handler

Package providing helper functions for a Laravel REST-API

94,344 155
infusionweb/laravel-marketo-rest-api

Provides a Laravel 5 service provider and facade for Marketo REST API Client.

271,651 0