Eğer değerler de tırnak içinde olsaydı, yani string olsalardı:
[{"id":"6","children":[{"id":"7","children":[{"id":"8"}]}]}]
şu şekilde ulaşırdınız:
SELECT JSON_SEARCH(alan, 'all', '8', NULL, '$**.id') FROM tablo
// "$[0].children[0].children[0].id"
SELECT IF(JSON_SEARCH(alan, 'all', '8', NULL, '$**.id') IS NOT NULL,1,0) FROM tablo
// 1
ama şu an sayısal değer oldukları için JSON_SEARCH çalışmaz. Şöyle bir şey yapılabilir:
SELECT JSON_CONTAINS(JSON_EXTRACT(alan ,'$**.id'),'8','$') FROM tablo
// 1
SELECT JSON_CONTAINS(JSON_EXTRACT(alan ,'$**.id'),'12','$') FROM tablo
// 0
Bunu da Builder'a dökersek
$id = 8;
$result = (bool) Model::selectRaw('JSON_CONTAINS(JSON_EXTRACT(alan ,"$**.id"), ?, "$") as result', [$id])->value('result');
// true