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
Installs: 1 364
Dependents: 0
Suggesters: 0
Security: 0
Stars: 19
Watchers: 2
Forks: 2
Open Issues: 4
Requires
- php: >=7.0
- illuminate/support: ~5.0
Requires (Dev)
- orchestra/testbench: ^3.6
README
⚠️ 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 yourapp/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' => 'john@doe.com', 'password' => Hash::make('secret'), ]);
$testModel = app(MyTestModel::class)->all();
$testModel = app(MyTestModel::class)->where('email', 'john@doe.com')->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
- get()
- Select()
- addSelect()
- where()
- whereNull()
- whereNotNull()
- orderBy()
- orderByDesc()
- whereIn()
- whereNotIn()
- find()
- findOrFail()
- paginate()
- value()
- pluck()
- count()
- min()
- max()
- avg()