MySQL Laravel 中如何存储 JSON 格式的数据

您所在的位置:网站首页 laravel怎么读 MySQL Laravel 中如何存储 JSON 格式的数据

MySQL Laravel 中如何存储 JSON 格式的数据

2024-07-11 13:40| 来源: 网络整理| 查看: 265

MySQL Laravel 中如何存储 JSON 格式的数据

在现代的开发中,JSON 是一种流行的数据格式,特别在前后端交互中,但是对于如何在 MySQL 和 Laravel 中存储 JSON 数据却是一个比较棘手的问题。本篇文章将帮助您理解并学会如何在 MySQL 和 Laravel 中存储 JSON 格式的数据。

阅读更多:MySQL 教程

JSON 介绍和应用

JSON 是一种运用广泛的数据格式,也是现代开发中最流行的交换数据格式之一。在 RESTful API 和前后端交互中,JSON 已成为标准的数据格式。由于其轻量化的特点,JSON 数据具有易读、易解析、易传输等特点,且与各种编程语言兼容性都较好。

使用 JSON 比使用 XML 或其他数据格式更有优势,因为 JSON 数据比 XML 更容易解析,且格式更简洁。使用 JSON 数据格式还可以避免 XHR 对 JSONRequest 的跨域限制。

在 Laravel 开发中,我们可以使用很多内置函数和类库来处理 JSON 数据,如 json_encode 和 json_decode 函数。

$data = ['name' => 'Laravel', 'version' => '8.x']; $json = json_encode($data);

以上代码将在变量 $json 中生成一个 JSON 格式的数据,数据内容为 {"name":"Laravel","version":"8.x"}。

在 MySQL 中存储 JSON 数据

MySQL 同样支持 JSON 数据的存储,MySQL 5.7 版本以后引入 JSON 数据类型,MySQL 8.0 版本又增加了许多 JSON 数据函数。

在 MySQL 数据库中,可以使用 JSON 数据类型来定义字段,并对 JSON 数据类型字段进行操作。在定义字段时,只需要在字段后面加上 JSON 即可。

CREATE TABLE example ( id INT AUTO_INCREMENT PRIMARY KEY, data JSON NOT NULL );

以上代码演示了如何创建一个名为 example 的数据表,数据表包含一个 id 字段和一个 data 字段,data 字段的数据类型为 JSON。

在将数据保存到数据库中时,我们可以使用 JSON_EXTRACT() 函数从 JSON 中提取数据并存储在相应的列中。使用 JSON_EXTRACT() 函数,我们可以简单地插入或更新数据,以及对数据进行查询。

INSERT INTO example (data) VALUES ('{"name": "Laravel", "version": "8.x"}');

以上代码演示了如何将 JSON 数据插入到 MySQL 中定义为 JSON 类型的字段中。

如果需要在前端搜索 MYSQL 中的 JSON 数据,则可以使用 JSON_EXTRACT() 函数进行查询。

SELECT * FROM example WHERE JSON_EXTRACT(data, '$.name') = 'Laravel';

以上代码可以查询 example 表中 name 字段为 Laravel 的所有记录。

在 Laravel 中存储 JSON 数据

在 Laravel 中存储 JSON 数据比在 MySQL 中简单。使用 Laravel 提供的 Fluent Query Builder 和 Eloquent ORM 可以轻松完成这项任务。

在 Laravel 的 Eloquent ORM 中,可以使用 $casts 属性,在模型中定义 JSON 字段类型。

class Example extends Model { protected $casts = ['data' => 'json']; }

以上代码演示如何在 Laravel 中定义 JSON 数据类型。

使用 Eloquent ORM 操作数据时,可以将 JSON 数据转换为数组并进行操作。在保存数据时,Laravel 会将数组转换为 JSON 并存储在数据库中。

$example = new Example; $example->data = ['name' => 'Laravel', 'version' => '8.x']; $example->save();

以上代码演示了如何在模型中创建新的数据条目。

在使用 Eloquent ORM 进行查询时,可以使用 where() 方法指定 JSON 数据中包含的特定字段。

$example = Example::where('data->name', 'Laravel')->get();

以上代码演示了如何使用 Eloquent ORM 进行搜索包含指定字段的 JSON 数据。

如果需要使用 Fluent Query Builder 进行数据操作,也可以使用 whereJsonContains() 方法。

$example = DB::table('example') ->whereJsonContains('data->name', 'Laravel') ->get();

以上代码演示了如何使用 Fluent Query Builder 进行搜索包含指定字段的 JSON 数据。

同时,Laravel 还提供了 toJson() 和 toArray() 方法,可以将模型的属性从数组转换为 JSON 格式,或将 JSON 格式转换为数组。即便在模型中未设置 $casts 属性,Laravel 也可以自动将 JSON 数据转换为数组。

$example = Example::find(1); $data = $example->data; $json = $example->toJson(); $array = $example->toArray();

以上代码演示了如何从模型属性中提取和转换 JSON 数据。

总结

总的来说,Laravel 提供了许多简便的方法来存储和操作 JSON 格式的数据。在 MySQL 中,可以使用 JSON 数据类型来定义字段,使用内置函数进行操作和查询。在 Laravel 中,可以使用 Fluent Query Builder 和 Eloquent ORM,通过$casts 属性定义 JSON 字段类型进行操作。

在开发过程中,如何存储 JSON 数据型为一个非常棘手的问题,本篇文章希望帮助您入门了解 MySQL 和 Laravel 中如何操作 JSON 数据。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3