Obtener suma del árbol de nodos

Estoy aprendiendo php. Tengo esta estructura

company 1 - $10| all $50
-company 1.1 - $10| all $20
--company 1.1.1 - 10$| all $10
-company 1.2 - $20| all $20

cada compañía puede tener varias compañías secundarias y solo una matriz. Cada empresa tiene dinero. Todas las empresas tienen Allmoney: dinero propio + dinero de todas las empresas de sus hijos.

En MySQL esta estructura como esta

id|parent_id|name|money|allmoney
1| 0| company 1| 10|###
2| 1| company 1.1|10 |###
3| 2| company 1.1.1|10 |###
4| 1| company 1.2|10 |###

Entonces, ¿cómo calculo allmoney para cada empresa en PHP? Ahora, eso necesito usar la recursividad, pero lo intento y no puede pasar nada. SELECCIONAR, ACTUALIZAR y otro comando mysql - Lo sé, por favor ayúdame con php. Escribo algo como esto:

function updatemoney($id)
    {
        $data = CS50::query("SELECT ...", $id);
        $allmoney = 0;

        if(count($data) > 0)
        {
            foreach($data as $row)
            {

                $allmoney += $row["cash"];
               //somewhere this, maybe need ubdate my db 
                $allmoney += updatemoney($row["id"]);
            }
        }
        else return 0;
    }

Muchas gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta