[扩展推荐] 为你的 Laravel 模型加上 Schemaless 属性(NoSQL 方案)

翻译 Summer ⋅ 于 1个月前 ⋅ 最后回复由 Destiny 3周前 ⋅ 700 阅读 ⋅ 原文地址
这是一篇社区协同翻译的文章,已完成翻译,更多信息请点击 协同翻译介绍

file

通过 Spatie 的 Laravel Schemaless Attributes Laravel 包, 你可以添加 schemaless 属性到 Eloquent 模型中了。它的 Readme 是这样介绍的:

如果你能够在 Eloquent 中使用 NoSQL 的话不会很酷吗?这个包就是这样做的。它提供了一个 trait ,能够在使用模型时保存任意值到单个 JSON 字段中。

科大大 翻译于 1个月前

由于该软件包需要支持 json 格式字段的数据库,因此你需要使用像 MySQL 5.7 或更高版本的数据库。

你可以像设置属性一样去获取或设置 schemaless 属性:

$yourModel->extra_attributes->name = 'value';
$yourModel->extra_attributes->name; // 返回 'value'

要保存 schemaless 属性,直接保存模型就好了:

// 其他设置都保持不变
$yourModel->save();
科大大 翻译于 1个月前

当我开始测试这个包的时候碰到的一个问题是查询模型的额外属性:

$yourModel->withExtraAttributes([
    'name' => 'value',
    'name2' => 'value2
])->get();

要使用这个包,你需要使用 Composer 安装:

composer require spatie/laravel-schemaless-attributes

接下来,你需要像以下这样添加到需要使用 JSON 属性的模型迁移文件中:

Schema::table('your_models', function (Blueprint $table) {
    $table->schemalessAttributes('extra_attributes');
});

你可以查看文档去获取需要配置 schemaless 属性到模型的额外操作,如果你打算在多个模型上使用 schemaless ,该文档会向你展示如何为额外属性访问器和作用域创建 trait 。

科大大 翻译于 1个月前

这个包提供了一种在关系型数据库中添加、访问和保留 schemaless 数据的功能,并提供了有关 JSON 数据的简便方法,请到 GitHub 查看完整文档和源码。

科大大 翻译于 1个月前

原文地址:https://laravel-news.com/laravel-schemal...

译文地址:https://laravel-china.org/topics/12252/e...


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

本帖已被设为精华帖!

文章译者

回复数量: 2
  • Destiny UI 精美、质量超高的技术博客 https://aabvip.com/
    1个月前

    对 json 格式字段的一系列操作。

  • Destiny UI 精美、质量超高的技术博客 https://aabvip.com/
    1个月前

    之前觉得 json 格式的字段处理有点麻烦,有这个包就方便多了。

暂无评论~~
您需要登陆以后才能留下评论!

Composer 中国全量镜像

Top 100 扩展包

Lumen 中文文档

Laravel 速查表

Laravel 中文文档

Laravel 项目开发规范

Laravel 开发环境部署

社区文档撰写指南

TDD 构建 Laravel 论坛笔记

PHP PSR 标准规范

PHP 设计模式全集

Dingo API 中文文档