首页 >数据库 >mysql教程 >如何使用 Laravel 在 JSON 列中有效搜索电子邮件?

如何使用 Laravel 在 JSON 列中有效搜索电子邮件?

Patricia Arquette
Patricia Arquette原创
2024-10-29 08:07:02312浏览

How to Effectively Search for Emails in a JSON Column using Laravel?

使用 Laravel 搜索 JSON 列

在 JSON 列中有效搜索数据的能力对于利用现代数据库的强大功能至关重要。在这种情况下,我们面临搜索存储在 JSON 列中的电子邮件的挑战。目标是检索发送给特定收件人的所有电子邮件的集合。

最初,尝试使用 whereJsonContains 方法,当传递适当的 JSON 路径和值时,该方法应该相应地过滤结果。然而,该方法并不成功,导致人们怀疑 JSON 路径可能不正确,或者该方法需要特定的格式。

仔细检查调试栏中的查询翻译会发现实际正在执行的查询数据库:

<code class="sql">select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))</code>

经过进一步调查,很明显,在 JSON 路径中处理数组时不支持箭头运算符 (->)。这是解决问题的关键。

替代方法涉及使用格式正确的 JSON 查询。在数组中搜索的正确语法是使用两个方括号 (`[[]]):

<code class="php">DB::table('emails')
->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]])
->get()</code>

通过此调整,查询将正确转换为:

<code class="sql">select * from `emails` where json_contains(`to`, '{"emailAddress":{"address":"[email protected]"}}')</code>

通过利用此修改后的语法,可以有效地检索发送到指定收件人的所需电子邮件集合。

以上是如何使用 Laravel 在 JSON 列中有效搜索电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn