使用 Laravel 在 Json 列中搜索
在我的电子邮件表中,我有一个以列类型命名的列。以下是值的存储方式:To
Json
[
{
"emailAddress": {
"name": "Test",
"address": "test@example.com"
}
},
{
"emailAddress": {
"name": "Test 2",
"address": "test2@example.com"
}
}
]
现在,我想要一个发送到“test@example.com”的所有电子邮件的集合。我试过了:
DB::table('emails')->whereJsonContains('to->emailAddress->address', 'test@example.com')->get();
(见 https://laravel.com/docs/5.7/queries#json-where-clauses)但我没有得到匹配。有没有更好的方法来使用Laravel(Eloquent)进行搜索?
在调试栏中,我可以看到此查询被“翻译”为:
select * from `emails` where json_contains(`to`->'$."emailAddress"."address"', '\"test@example.com\"'))