Laravel での JSON 列の検索
Laravel で JSON 列を操作する場合、特定の値の検索は困難な場合があります。ここでは、「To」列に保存された JSON 配列内で電子メールを検索するという頻繁に発生する問題の解決策を示します。
問題:
「電子メール」テーブル内、JSON 型の「To」列には、電子メール アドレスを表すネストされた配列が含まれます。目標は、特定の受信者に送信されたすべてのメールのコレクションを取得することです。
失敗した試行:
Laravel の whereJsonContains メソッドを使用して最初に検索しようとしましたが、一致しませんでした。 。クエリは次のように「変換」されます:
select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"[email protected]\"'))
解決策:
検索を成功させる鍵は、矢印演算子 (->) がそうではないことを理解することにあります。配列を操作します。配列を含む JSON 検索の場合は、次の構文を使用します。
DB::table('emails') ->whereJsonContains('to', [['emailAddress' => ['address' => '[email protected]']]]) ->get()
このクエリは、指定された受信者のアドレスに送信されたすべての電子メールを正しく識別して返します。
以上がLaravelの「To」列のJSON配列内のメールを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。