ホームページ >データベース >mysql チュートリアル >LaravelでJSON列内のメールを検索するにはどうすればよいですか?

LaravelでJSON列内のメールを検索するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-29 07:13:02326ブラウズ

How to Search for Emails Within a JSON Column in Laravel?

JSON 列を検索するための雄弁なクエリ

Laravel では、JSON 列を検索するのが難しい場合があります。この記事では、電子メール アドレスを JSON 形式で保存する "To" 列に関する特定のシナリオについて詳しく説明します。

問題

次のような "To" 列が指定された場合次のような 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>

このクエリは、「To」列に「test@example.com」を含むすべての電子メールを返します。

以上がLaravelでJSON列内のメールを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。