public function tree() { $tree = []; $tree['countries'] = []; $countries = Model::Country()->full()->orderByName()->exec(); $i = 0; foreach ($countries as $country) { $tree['countries'][$i] = ['id' => $country['id'], 'code' => $country['code'], 'name' => $country['name']]; $tree['countries'][$i]['regions'] = []; $regions = Model::Region()->full()->orderByName()->exec(); foreach ($regions as $region) { $dpts = []; $departments = Model::Department()->where(['region', '=', $region['code']])->orderByCode()->exec(); if (!empty($departments)) { foreach ($departments as $dpt) { $dpts[] = ['id' => $dpt['id'], 'code' => $dpt['code'], 'name' => $dpt['name']]; } } $tree['countries'][$i]['regions'][] = ['id' => $region['id'], 'code' => $region['code'], 'name' => $region['name'], 'departments' => $dpts]; } $i++; } return $tree; }