okipa/laravel-model-json-storage

此包已被弃用且不再维护。未建议替代包。

将模型存储在json文件中而不是数据库中(单行或多行记录)可能是一个不错的选择。此包可以节省您创建大量行表的麻烦,提高数据恢复性能,并允许您像在数据库中一样从json文件中存储和访问模型。

1.0.4 2018-05-30 12:14 UTC

This package is auto-updated.

Last update: 2019-09-04 16:41:30 UTC


README

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

⚠️ 此包已被弃用 ⚠️
如果您想让它发展并维护它,请随时与我联系。

将模型存储在json文件中而不是数据库中(单行或多行记录)可能是一个不错的选择。
此包可以节省您创建大量行表的麻烦,提高数据恢复性能,并允许您像在数据库中一样从json文件中存储和访问模型。

使用前阅读

请注意,

  • 此包的目的是将您的模型实例存储在json中。
  • 因此,当您访问数据时,json文件总是完全读取的
  • 因此,如果您有很多实例要存储,请不要使用此包,它可能会引起性能问题而不是提高性能。
  • 所有与查询相关的和与模型相关的功能均不可用(尤其是那些使用数据库的),此包是为相当简单的用例制作的。
  • 此包允许您像在数据库中存储一样操作模型,但它在幕后始终使用Illuminate\Support\Collection方法

安装

  • 使用composer安装此包
composer require okipa/laravel-model-json-storage
  • Laravel 5.5+使用包自动发现,因此不需要您手动添加ServiceProvider。如果您不使用自动发现或使用Laravel 5.0-版本,请在您的app/Providers/AppServiceProvider.php中的register()方法中添加包服务提供者。
// laravel model json storage
// https://github.com/Okipa/laravel-model-json-storage
$this->app->register(Okipa\LaravelModelJsonStorage\ModelJsonStorageServiceProvider::class);

用法

首先,将ModelJsonStorage特质添加到您的模型中。

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

然后,只需像平常一样操作您的模型即可。
存储后,您将在model-json-storage配置文件中定义的路径下看到一个名为您模型标题的json文件。

$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();

自定义配置

要个性化包配置,您必须首先使用以下脚本发布它

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

然后,打开已发布的包配置文件(config/model-json-storage.php),并通过为以下项设置自己的值来覆盖默认配置

  • json存储路径
  • ... 就这些了。

API

已覆盖最常用的与查询相关的和与模型相关的方法,以便您可以使用通常方式使用存储在json中的模型。
检索以下可用的方法列表。
然而,如果您想为个人需求添加方法,请不要犹豫,通过PR改进这个包。

可用的 Illuminate\Database\Eloquent\Model 方法

可用的 Illuminate\Database\Query\Builder 方法

可用的 Illuminate\Database\Concerns\BuildsQueries 方法