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.
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.
- 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 yourapp/Providers/AppServiceProvider.php
:
// laravel model json storage
// https://github.com/mjducharme/laravel-model-json-storage
$this->app->register(Okipa\LaravelModelJsonStorage\ModelJsonStorageServiceProvider::class);
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();
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.
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.