首頁 >資料庫 >mysql教程 >如何在 Laravel 中的 JSON 欄位中查詢電子郵件地址?

如何在 Laravel 中的 JSON 欄位中查詢電子郵件地址?

Barbara Streisand
Barbara Streisand原創
2024-10-29 00:24:02890瀏覽

How to Query for Email Addresses within a JSON Column in Laravel?

從Laravel 中的JSON 列檢索數據

問題:

在Laravel 應用程序中,您有一個to列電子郵件表中的JSON 類型,以以下格式儲存電子郵件地址:

<code class="JSON">[
    {
        "emailAddress": {
            "name": "Test", 
            "address": "[email&#160;protected]"
        }
    }, 
    {
        "emailAddress": {
            "name": "Test 2", 
            "address": "[email&#160;protected]"
        }
    }
]</code>

您需要擷取發送至「[email protected]」的所有電子郵件的集合。

解決方案:

使用 Laravel 的 Eloquent,您可以使用 whereJsonContains 方法在 JSON 欄位中搜尋特定值。但是,您的初始查詢:

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

不會傳回符合項,因為箭頭運算子 (->) 在陣列鍵中無效。要解決此問題,請改用巢狀數組:

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

此查詢將正確搜尋等於「[email protected]」的電子郵件地址並傳回所需的集合。

以上是如何在 Laravel 中的 JSON 欄位中查詢電子郵件地址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn