В моей таблице электронных писем есть столбец с именем 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\"'))