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