問題:
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 中国語 Web サイトの他の関連記事を参照してください。