L'ho fatto funzionare e ho pubblicato la risposta qui se nel caso qualcuno avesse bisogno di aiuto in futuro.
Fondamentalmente possiamo fare un semplice where
interrogare con @>
operatore. E il valore può essere codificato in json con l'e-mail cercata. Di seguito è riportata la query per cercare un'e-mail particolare senza utilizzare whereRaw
metodo.
$contacts = Contact::where("emails", '@>', '[' . json_encode(['value' => $query]) . ']')->get();
Spero che aiuti qualcun altro in futuro :)