yazeedobaid / jsonable
在MYSQL数据库中查询JSON字段的Eloquent风格
dev-master
2019-04-26 12:19 UTC
This package is auto-updated.
Last update: 2024-09-27 00:51:29 UTC
README
在MYSQL数据库中查询JSON字段的Eloquent风格。
安装
使用Composer,在项目根目录下要求安装此包。
$ composer require yazeedobaid/jsonable
用法
设置一个模型
<?php namespace App; use YazeedObaid\Jsonable\Jsonable; use Illuminate\Database\Eloquent\Model; class Post extends Model { use Jsonable; }
JSON包含
向查询中添加ANDed where子句以检查JSON字段是否包含文本。第一个参数指定数据库中的JSON列名,第二个参数是JSON字段中的路径,第三个参数是要检查JSON字段是否包含的文本。
$post = Post::jsonContains('body', 'title', 'Laravel')->first();
或JSON包含
向查询中添加ORed where子句以检查JSON字段是否包含文本。第一个参数指定数据库中的JSON列名,第二个参数是JSON字段中的路径,第三个参数是要检查JSON字段是否包含的文本。
$post = Post::orJsonContains('body', 'title', 'Laravel')->first();
JSON提取
向查询中添加一个选择字段以从JSON字段中选择一个值。第一个参数指定数据库中的JSON列名,第二个参数是JSON字段中的路径。
$post = Post::jsonExtract('body', 'title')->first();
JSON键
向查询中添加一个选择字段以返回JSON字段中的所有键。第一个参数指定数据库中的JSON列名。
$post = Post::jsonKeys('body')->first();
如果JSON字段嵌套有其他JSON对象,你可以添加第二个参数以返回嵌套JSON对象的键。
$post = Post::jsonKeys('body', 'title')->first();
JSON搜索
在JSON字段中搜索一个值并返回该值的JSON路径。第一个参数指定数据库中的JSON列名,第二个参数指定返回所有找到的结果或第一个结果,第三个参数是要搜索的文本。
$post = Post::jsonSearch('body', 'one', 'Laravel')->first();
$post = Post::jsonSearch('body', 'all', 'Laravel')->first();