ホームページ >データベース >mysql チュートリアル >LaravelでJSON列内のメールを検索するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。