问题:
在 Laravel 应用程序中,您有一个 to 列电子邮件表中的 JSON 类型,以以下格式存储电子邮件地址:
<code class="JSON">[ { "emailAddress": { "name": "Test", "address": "[email protected]" } }, { "emailAddress": { "name": "Test 2", "address": "[email protected]" } } ]</code>
您需要检索发送到“[email protected]”的所有电子邮件的集合。
解决方案:
使用 Laravel 的 Eloquent,您可以使用 whereJsonContains 方法在 JSON 列中搜索特定值。但是,您的初始查询:
<code class="php">DB::table('emails')->whereJsonContains('to->emailAddress->address', '[email protected]')->get();</code>
不会返回匹配项,因为箭头运算符 (->) 在数组键中无效。要解决此问题,请改用嵌套数组:
<code class="php">DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get();</code>
此查询将正确搜索等于“[email protected]”的电子邮件地址并返回所需的集合。
以上是如何在 Laravel 中的 JSON 列中查询电子邮件地址?的详细内容。更多信息请关注PHP中文网其他相关文章!