Направих го работещо и публикувам отговора тук, ако някой има нужда от помощ в бъдеще.
По принцип можем да направим просто where
заявка с @>
оператор. И стойността може да бъде json кодирана с търсения имейл. Следва заявката за търсене на определен имейл без използване на whereRaw
метод.
$contacts = Contact::where("emails", '@>', '[' . json_encode(['value' => $query]) . ']')->get();
Надявам се да помогне на някой друг в бъдеще :)