したがって、特定のIDとdata
カラムを比較することによって、Laravelのnotifications
テーブルをクエリしたいとします。これはdata
列がどのように見えるかです:LaravelのクエリビルダJSONセレクタ `field-> key`により構文エラーが発生する
{
"Message": "some message",
"id": 3
}
、私はここ3に等しいIDを持つすべての通知を選択する必要があり、私はそれをやろうとした方法です。
DB::table('notifications')->where('data->id', '3')->get();
しかし、これは、次のエラーがスローされます。
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '>'$."id"' = ?' at line 1 (SQL: select * from
notifications
wheredata
->'$."id"' = 3)
私はここに私の心を失っていますが、誰も私を助けることができますか?
LaravelはJSONをテキストとして保存するため、この方法ではクエリできません。 この情報をクエリするためにこの情報を保存する方法を変更する必要があります。そうしないと、 'data LIKE '%" id ":3%''のような全文検索が必要になりますが、 。 –
これを見てください:https://stackoverflow.com/questions/44669673/laravel-eloquent-search-in-json-values-of-database –