Giter Club home page Giter Club logo

mrcrayon / laravel-model-json-storage Goto Github PK

View Code? Open in Web Editor NEW

This project forked from okipa/laravel-model-json-storage

0.0 1.0 0.0 48 KB

Storing your models in a json file rather than in database (single or few lines recording) can be a good option. This package saves you to create a table for a ridiculous amount of lines, improves the data recovery performances, and allows you to store and access to your models from a json files as you would do it in database.

License: MIT License

PHP 100.00%

laravel-model-json-storage's Introduction

laravel-model-json-storage

Source Code Latest Version Total Downloads License: MIT Build Status Code Coverage Scrutinizer Code Quality

⚠️ This package has been abandonned ⚠️
Do not hesitate to contact me if you want to make it evolve and to maintain it.

Storing your models in a json file rather than in database (single or few lines recording) can be a good option.
This package saves you to create a table for a ridiculous amount of lines, improves the data recovery performances, and allows you to store and access to your models from a json files as you would do it in database.


To read before use

Please keep in mind that :

  • The purpose of this package is to store your model instances in json.
  • Consequently, the json file is always entirely read when you access to your data
  • Consequently, you should NOT use this package if you have a lot of instances to store, it could cause performance issues rather than improve it.
  • All the query-related and model-related functionalities are not available (especially those which use database), this package has been made for quite simple use cases.
  • This package enables you to manipulate models as if it they would been stored in database but it always uses the Illuminate\Support\Collection methods methods under the hood.

Installation

  • Install the package with composer :
composer require okipa/laravel-model-json-storage
  • Laravel 5.5+ uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider. If you don't use auto-discovery or if you use a Laravel 5.0- version, add the package service provider in the register() method from your app/Providers/AppServiceProvider.php :
// laravel model json storage
// https://github.com/Okipa/laravel-model-json-storage
$this->app->register(Okipa\LaravelModelJsonStorage\ModelJsonStorageServiceProvider::class);

Usage

First, add the ModelJsonStorage trait in your model.

class MyTestModel extends Illuminate\Database\Eloquent\Model
{
    use Okipa\LaravelModelJsonStorage\ModelJsonStorage;
    
    [...]
}

Then, just manipulate your model normally.
After a storage, you will see a json file named with your model title in the path defined in the model-json-storage config file.

$testModel = app(MyTestModel::class)->create([
    'name' => 'John Doe',
    'email' => '[email protected]',
    'password' => Hash::make('secret'),
]);
$testModel = app(MyTestModel::class)->all();
$testModel = app(MyTestModel::class)->where('email', '[email protected]')->first();
$testModel->update([
    'name' => 'Gary Cook'
]);
$testModel->delete();

Customize configuration

To personalize the package configuration, you have to publish it first with the following script :

php artisan vendor:publish --tag=model-json-storage::config

Then, open the published package configuration file (config/model-json-storage.php) and override the default configuration by setting your own values for the following items :

  • json storage path
  • ... that's all for now.

API

The most used query-related and model-related methods have been overridden to allow you to use your json stored model as usual.
Retrieve the list of the available methods bellow.
However, if you want to add a method for your personal needs, do not hesitate to improve this package with a PR.

Available Illuminate\Database\Eloquent\Model methods

Available Illuminate\Database\Query\Builder methods

Available Illuminate\Database\Concerns\BuildsQueries methods

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.