Laravel nested relationships
For city and companies specific fields , you need to distribute the with eloquent.Eg:
return Event::with([ 'city' => function ($query) { $query->select('id', '...'); }, 'city.companies' => function ($query) { $query->select('id', '...'); }, 'city.companies.persons' => function ($query) { $query->select('id', '...'); }])->get();