Skip to content

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

Notifications You must be signed in to change notification settings

mjducharme/laravel-model-json-storage

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

laravel-model-json-storage

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

Forked from Okipa/laravel-model-json-storage

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 mjducharme/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/mjducharme/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

About

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.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%