用於搜尋 JSON 欄位的雄辯查詢
在 Laravel 中,搜尋 JSON 欄位可能是一個挑戰。本文將深入研究涉及以 JSON 格式儲存電子郵件地址的「收件者」列的特定場景。
問題
給定一個「收件者」欄位像這樣的JSON 資料:
<code class="json">[ { "emailAddress": { "name": "Test", "address": "test@example.com" } }, { "emailAddress": { "name": "Test 2", "address": "test2@example.com" } } ]</code>
目標是擷取到「test @example.com”的電子郵件。使用 whereJsonContains('to->emailAddress->address', 'test@example.com') 不會傳回任何結果。
解
問題所在在使用箭頭運算子 (->) 時。在 JSON 陣列中,不支援箭頭運算子。相反,應使用雙方括號表示法 ([['emailAddress' => ['address' => 'test@example.com']]])。
已修正的查詢是:
<code class="php">DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => 'test@example.com']]]) ->get()</code>
此查詢將傳回「收件者」欄位中包含「test@example.com」的所有電子郵件。
以上是如何在 Laravel 中的 JSON 欄位中搜尋電子郵件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!