LaravelでJSONが含まれている条件での検索方法


  1. 単一のキーと値のマッチング:
$posts = DB::table('posts')
            ->where('meta->key', '=', 'value')
            ->get();

上記の例では、'posts'というテーブルから'meta'カラム内のJSONデータの特定のキーと値をマッチングさせています。

  1. 配列の要素の一致:
$posts = DB::table('posts')
            ->whereJsonContains('meta->tags', ['tag1', 'tag2'])
            ->get();

上記の例では、'posts'テーブルの'meta'カラム内の'tags'キーが、'tag1'または'tag2'のいずれかを含んでいるレコードを検索しています。

  1. 複雑な条件の組み合わせ:
$posts = DB::table('posts')
            ->whereJsonContains('meta->tags', ['tag1', 'tag2'])
            ->where('status', '=', 'published')
            ->orWhereJsonContains('meta->author', ['John', 'Jane'])
            ->get();

上記の例では、'posts'テーブルの'meta'カラム内の'tags'キーが'tag1'または'tag2'のいずれかを含み、かつ'status'カラムが'published'であるレコード、または'meta'カラム内の'author'キーが'John'または'Jane'のいずれかを含むレコードを検索しています。

これらはいくつかの基本的な検索の例ですが、Laravelではより複雑なJSONクエリもサポートしています。詳細については、Laravelの公式ドキュメントを参照してください。