在 Laravel 中搜索 JSON 列
在 Laravel 中使用 JSON 列时,搜索特定值可能具有挑战性。以下是在“收件人”列中存储的 JSON 数组中查找电子邮件的常见问题的解决方案。
问题:
在“电子邮件”表中,JSON 类型的“收件人”列包含表示电子邮件地址的嵌套数组。目标是检索发送给特定收件人的所有电子邮件的集合。
尝试失败:
使用 Laravel 的 whereJsonContains 方法进行搜索的初始尝试导致没有匹配项。查询“翻译”为:
select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))
解决方案:
成功搜索的关键在于理解箭头运算符(->)不使用数组。对于涉及数组的 JSON 搜索,请使用以下语法:
DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get()
此查询将正确识别并返回发送到指定收件人地址的所有电子邮件。
以上是如何在 Laravel 的'收件人”列中的 JSON 数组中搜索电子邮件?的详细内容。更多信息请关注PHP中文网其他相关文章!