【发布时间】:2019-05-07 13:26:03
【问题描述】:
在我的电子邮件表中,我有一个名为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\"'))
【问题讨论】:
-
你用的是什么数据库?
-
数据库 = MySQL 5.7.24
-
只有1个邮箱时有效
标签: php mysql json laravel laravel-5