使用 Laravel 的 eloquent 在 JSON 列中搜索

2024-01-10

我一直在使用 Laravel 5.4 的 eloquent,遇到了一个问题。

我有一个名为posts其中,有一列名为template_ids。它将值存储在json_encoded格式如下:

["1","25","48"]

现在,我想根据 ID 数组对查询应用过滤器:

$id_access = array:3 [ 
  0 => "1"
  1 => "3"
  2 => "48"
]

我想做的是搜索是否有$id_access值存在于数据库列中,template_ids.

我试过:

Post::where('accessable_to',1)->whereIn('template_ids', $template_access_array)->paginate(3);

另外,我尝试过:

Post::where('accessable_to',1)->whereRaw("JSON_CONTAINS(template_ids, ".$template_access.")")->paginate(3);

已浏览this https://stackoverflow.com/questions/41942374/json-search-in-laravel-eloquent,但这对我不起作用。


看看是否template_idsJSON 字段包含 Needle 数组中的“任何”值,您需要使用多个OR'd JSON_CONTAINS https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html#function_json-contains需要 MySQL 5.7 的条件:

$ids = ['1', '3', '48'];

Post::where('accessable_to', 1)
    ->where(function ($query) use ($ids) {
        $firstId = array_shift($ids);

        $query->whereRaw(
            'JSON_CONTAINS(template_ids, \'["' . $firstId . '"]\')'
        );

        foreach ($ids as $id) {
            $query->orWhereRaw(
                'JSON_CONTAINS(template_ids, \'["' . $id . '"]\')'
            );
        }

        return $query;
    });

return Post::paginate(3);

Laravel 的查询生成器将生成如下查询:

SELECT * FROM "posts" 
WHERE "accessable_to" = ? AND (
    JSON_CONTAINS(template_ids, '["1"]') OR 
    JSON_CONTAINS(template_ids, '["3"]') OR 
    JSON_CONTAINS(template_ids, '["48"]')
)

哪些目标记录中具有任何这些 IDtemplate_idsJSON 类型的字段。

您可能有兴趣阅读相关的 Laravel内部提案 https://github.com/laravel/internals/issues/296.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Laravel 的 eloquent 在 JSON 列中搜索 的相关文章

  • use 语句顺序会影响 PHP 中的功能吗?

    我使用 PHP 的命名空间已经有一段时间了 我认为它对我的编程来说是一个很好的补充 今天早上我想知道一些关于use陈述 我想知道顺序是否use影响我的 PHP 代码的功能 根据 PHP net 使用别名引用外部完全限定名称或导入的能力是命名
  • PHP 电子邮件验证[重复]

    这个问题在这里已经有答案了 For PHP最好的电子邮件验证方法是什么preg NOT ereg因为它是已弃用 删除 I don t需要检查该网站是否存在 这不像最高安全性 我找到了很多方法ereg但它们 显然 不是好的做法 我建议你使用F
  • CryptoJS 使用密码加密 AES,但 PHP 解密需要密钥

    我在用CryptoJS https code google com p crypto js AES加密字符串 function doHash msg msg String msg var passphrase aggourakia var
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • php隐藏所有错误[重复]

    这个问题在这里已经有答案了 隐藏的最佳做法是什么allPHP 错误 因为我不想向用户显示错误 我尝试过使用 htacess通过输入代码php flag display errors off在那里 但它返回给我一个500 error 还有其他
  • 写入 xml 文件时允许的内存大小已耗尽(尝试分配 4459414 字节)[重复] 67108864 字节

    这个问题在这里已经有答案了 可能的重复 php 中允许的内存大小已耗尽 尝试分配 43148176 字节 33554432 字节 https stackoverflow com questions 415801 allowed memory
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • Monkeyrunner/jython 中未找到 JDBC 驱动程序错误

    我需要在中插入一些东西DB 我在用着JDBC as a connector jython the script mysql数据库和脚本正在运行CentOS 我的代码看起来像这样 from com android monkeyrunner i
  • 错误 #520009 - 帐户受到限制

    我收到 520009 错误 帐户 电子邮件受保护 cdn cgi l email protection被限制 当尝试进行并行付款时 我的代码使用沙箱运行良好 但我切换到实时端点 它开始失败 有问题的帐户是有效的 PayPal 帐户 我使用的
  • 彩色 var_dump() 和错误

    我怎样才能将样式设置为var dump 功能和PHP错误样式 如下图所示 目前我有下一个观点var dump with pre var dump pre 没有它将全部在一行中 并且只是纯文本的错误 我搜索了一些 PHP 颜色错误 var d
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • Lumen:无法打开流:.../vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 中的权限被拒绝

    My OS is ubuntu 16 04 and I am running Lumen 5 5 When I try to run the app in the browser I get an error 500 我在 var log
  • 从检查元素隐藏 ''

    我有这个 HTML 和 PHP 联系表
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate
  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • PHP date() 和 strtotime() 返回错误的月份 31 日

    我在用着date and strtotime 函数在下拉列表中显示接下来的 3 个月 PHP代码 echo date m Y strtotime 0 months echo date m Y strtotime 1 months echo
  • 我如何向 Windows Server IIS 7 中的文件夹授予权限

    我是 PHP 和 Windows Server 新手 在查看我在 PHP 中创建的表单时遇到以下错误 Error in exception handler The stream or file C inetpub wwwroot wrp a
  • 如何关闭整个数据库的区分大小写

    我创建了一个包含许多脚本和许多存储过程的数据库 在这个数据库中 我们没有注意担心区分大小写 因为它对于我的本地开发计算机来说是关闭的 综上所述 我试图弄清楚如何使以下两条语句返回相同的结果 SELECT FROM companies SEL
  • Google Drive 服务帐户上传的位置

    我正在尝试使用服务帐户将文件上传到我的 Google 云端硬盘 当我部署此代码时 我不希望用户给予授权 我希望他们上传到我的帐户 我通过 PHP 使用它 下面是我到目前为止的情况 这段代码是基于官方文档给出的例子 当我运行 php 脚本时

随机推荐

  • 如何在 SwiftUI NavigationLink 中删除不透明动画

    当点击 NavigationLink 时 它会稍微降低不透明度 有没有办法禁用此功能 我尝试使用 buttonStyle PlainButtonStyle 但这并没有达到预期的效果 它嵌入在滚动视图中 在可定制性方面优于列表 ScrollV
  • 我可以使用 Mojolicious 构建静态网站吗?

    是否可以使用Mojolicious模板系统来构建静态网站 我正在尝试使用这样的 骨架 脚本 use Mojo Template use Mojolicious Plugin DefaultHelpers use Mojolicious Pl
  • 在没有秘密的情况下解码 JWT 令牌

    我通过 JWT 使用私钥创建了一个令牌 但是当我尝试对其进行解码时http kjur github io jsjws tool jwt html http kjur github io jsjws tool jwt html 我发现令牌可以
  • 使用 WCF 以及 jquery(AJAX) 和 html 客户端的文件上传服务

    我想知道如何通过使用 jquery 进行 AJAX 调用来使用 WCF 上传文件 您可以使用一些现成的 JQuery 插件 例如 Ajax文件上传 http www phpletter com Our Projects AjaxFileUp
  • 页面加载完成后如何执行JavaScript函数?

    页面加载完成后如何执行JavaScript函数 Use the onload像这样的事件 window onload function your code here
  • RecyclerView onClick 用于多个按钮并从 Activity 进行处理

    我在用着RecyclerView with CardView并在里面CardView有 2 个按钮 现在 已经实施了onClick事件通过实施View OnClickListener by the ViewHolder静态类并覆盖事件 其工
  • 如何使用 Prototype 自动调整文本区域大小?

    我目前正在为我工 作的公司开发一个内部销售应用程序 并且我有一个允许用户更改送货地址的表单 现在 我认为如果我用于主要地址详细信息的文本区域仅占据其中文本的区域 并且在文本发生更改时自动调整大小 那么它看起来会好得多 这是当前的屏幕截图 有
  • 如何加载页脚之前的内容?

    我的页脚是在内容加载之前加载的 我的导航栏中有多个按钮 单击时会打开一个新组件 当用户点击事件时 它会在从 api 加载事件后发出 此时页脚加载正常 但之后我转到另一个链接 比如说特殊链接 然后页脚在活动之前加载 我尝试如下 事件组件 ts
  • 在选项卡栏控制器之前显示登录屏幕

    我正在做一个 Twitter 应用程序 并在 AppDelegate 上 didFinishLaunchingWithOptions如果该对象上的 NSUserDefaults 为空 我将使用下一个代码来加载登录视图 NSUserDefau
  • 基于 PySpark 中另一个数据帧的列值创建指标数组

    我有两个数据框 df1 id1 items1 0 B C D E 1 E A C 2 F A E B 3 E G A 4 A C E B D and df2 id2 items2 001 A C 002 D
  • Developer M 预览版中的共享库

    我正在尝试在 Android M 开发预览版上测试我的应用程序 我的应用程序使用共享库 我已将其放置在 Android Studio 内的 jni libs armeabi 中 我相信当它召唤的时候System loadLibrary my
  • 如何减小 Puppeteer 的大小

    我使用 Puppeteer 进行网页抓取 并使用我制作的一个小型 NodeJs Web 应用程序 该网络应用程序托管在 Heroku 上并使用jontewks puppeteer heroku buildpack到作品 我面临的问题是 由于
  • Firebase 查询方法不起作用

    这是我的数据树 look twopointo 0 comment Hi Text1 Hello Text2 Bonsoir type Bonjour version 4 0 6 由于某种原因查询不起作用 button setOnClickL
  • Javascript 数组映射 2D 数组

    我正在尝试聚合下面的数组 arr 以便获得如下输出 期望的输出 2011 04 11 开放 6 2011 04 11 关闭 4 但我得到 Output 2011 04 11 开园 6 2011 04 11 闭园 4 我如何获取 javasc
  • VSTS (Azure DevOps) 中的 Selenium 屏幕截图

    根据我的搜索 它应该 正常工作 This https learn microsoft com en us azure devops test collect screenshots and video view vsts是我找到的最好的文章
  • 处理文件时,如何获取当前行号?

    当我使用下面的构造循环文件时 我还需要当前行号 with codecs open filename rb utf8 as f retval for line in f process line 是否存在类似的东西 for line line
  • WSGI:start_response函数的目的是什么

    你能提供一个现实生活中的例子吗WSGI http wsgi readthedocs org en latest start response http webpython codepoint net wsgi application int
  • 在 Android 谷歌地图 API v2 中隐藏标记信息窗口

    目前 我可以使用 Android Google 地图 API v2 查看 Google 地图中的所有标记 在地图中添加我的标记 mapView addMarker new MarkerOptions position aUsersLocat
  • Mysql 列约束为“非空”/“必需”

    我们可以将mysql中的一列指定为 非空 必需 吗 要求是确保该字段在任何记录插入时都不会保持空白 我假设你不想要空白 空字符串 而不是NULL 表中允许的值 通常情况下 这就是CHECK约束为 你做类似的事情 CREATE TABLE m
  • 使用 Laravel 的 eloquent 在 JSON 列中搜索

    我一直在使用 Laravel 5 4 的 eloquent 遇到了一个问题 我有一个名为posts其中 有一列名为template ids 它将值存储在json encoded格式如下 1 25 48 现在 我想根据 ID 数组对查询应用过