Sushi — Eloquent 的“数组”驱动器

Sushi 🍣 — Eloquent 的“数组”驱动器

sushiEloquent's missing "array" driver.项目地址:https://gitcode.com/gh_mirrors/su/sushi

在 Laravel 中,有时候您想使用 Eloquent ORM,但又不想处理数据库。这就是 Sushi 能派上用场的地方。它让 Eloquent 模型直接操作静态数据数组,如同它们是来自实际数据库的记录。

安装与使用

通过简单的 composer require calebporzio/sushi 命令,您可以快速安装这个包。然后,只需两步,即可将您的模型转换为无数据库模式:

  1. 在模型中引入 Sushi 特性。
  2. 在模型中定义一个 $rows 属性,存储您的数据。

以下是一个示例:

class State extends Model
{
    use \Sushi\Sushi;

    protected $rows = [
        [
            'abbr' => 'NY',
            'name' => '纽约',
        ],
        // 更多数据...
    ];
}

现在,你可以像操作常规 Eloquent 模型一样,查询和获取这些数据了:

$stateName = State::whereAbbr('NY')->first()->name;

关系管理

即使在没有数据库的情况下,Sushi 也支持关系定义。例如,创建一个基于数组的 Role 模型,可以与其他标准模型建立关联,如 User 模型。这意味着您可以执行诸如关联、加载关系等操作,就像在传统数据库环境中一样。

动态数据源与缓存

您可以通过自定义 getRows() 方法来实现动态数据源。比如,从远程 API 获取数据。如果选择自定义数据获取方法,还可以控制 Sushi 是否缓存数据以及如何确定缓存是否过期。

自定义架构

对于更复杂的数据结构,您可以使用 $schema 属性或 getSchema() 方法来定义字段类型。这允许您精细控制模型的行为,即使数据不是来自传统的数据库表。

如何工作

Sushi 内部会为每个模型创建并缓存一个 SQLite 数据库。当无法缓存时,它会退化到内存中的 SQLite 数据库。这样保证了无数据库的数据操作体验仍然接近于数据库操作。

应用场景

Sushi 非常适合用来处理固定不变或更新不频繁的数据,如国家、地区、角色、权限等数据。此外,用于模拟测试数据或者处理来自非数据库源的静态数据也非常适用。

技术亮点

  • 不依赖数据库,轻量级解决方案。
  • 支持 Eloquent 查询语句,包括关系操作(除 whereHas 外)。
  • 可自定义数据获取逻辑,支持实时数据。
  • 提供缓存机制,确保性能。
  • 支持字符串作为主键。
  • 易于集成到现有 Laravel 项目。

总的来说,Sushi 是一个创新的解决方案,为那些希望利用 Eloquent 简洁性和灵活性,但不需要传统数据库环境的应用提供了一种新的途径。立即尝试,并享受 Eloquent 编程带来的便利吧!

sushiEloquent's missing "array" driver.项目地址:https://gitcode.com/gh_mirrors/su/sushi

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乌昱有Melanie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值