Sorry I am new to Laravel and PHP. I have a web application code that I need to debug. I run the code, and it gives me ErrorException Trying to get property 'name' of non-object. I looked it up, and I know it's a common problem but I still cannot figure out what is causing this error. I already looked at this page and I don't understand: Reference - What does this error mean in PHP?
This is my controller code:
    function getActivity(){
    $lead_history = Lead::with('user','eventTypeTrashed','locationTrashed')->get();
    $event_history = Event::with('user','booking','contactus.event_type_trashed','booking.location_trashed')->get();
    
    $data = [];
    foreach ($lead_history as $key => $leads){
        if(count($leads->revisionHistory) > 0){
            foreach ($leads->revisionHistory as $history){
                $date_diff = \DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s'))->diff(\DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s',strtotime($history->updated_at))));
                if($date_diff->d > 0 ){
                    $date = $date_diff->d . ' days ago';
                } elseif($date_diff->h > 0){
                    $date = $date_diff->h . ' hours ago';
                }else{
                    $date = $date_diff->i . ' minutes ago';
                }
                $data[] = [
                    'id' => $leads->id,
                    'type' => 'lead',
                    'image' => $history->userResponsible()->user_avatar,
                    'user' => $history->userResponsible()->first_name .' '. $history->userResponsible()->last_name,
                    'user_id' => $history->userResponsible()->id,
                    'key' => ucwords(str_replace("_"," ",$history->fieldName())),
                    'client' => $leads->client_name,
                    'status' => 'update',
                    'old_value' =>$history->oldValue(),
                    'new_value' =>$history->newValue(),
                    'updated_at' => $history->updated_at,
                    'time_diff' =>$date,
                    'priority' => $leads->priority,
                    'location' => $leads->locationTrashed->name, // This line casuses an error
                    'event_type' => ($leads->eventTypeTrashed) ? $leads->eventTypeTrashed->name : ''
                ];
            }
        }
        $date_diff = \DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s'))->diff(\DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s',strtotime($leads->created_at))));
        if($date_diff->d > 0){
            $date = $date_diff->d . ' days ago';
        } elseif($date_diff->h > 0){
            $date = $date_diff->h . ' hours ago';
        }else{
            $date = $date_diff->i . ' minutes ago';
        }
        $data[] = [
            'id' => $leads->id,
            'type' => 'lead',
            'image' => $leads->user->user_avatar,
            'user' => $leads->user->first_name .' '. $leads->user->last_name,
            'user_id' => $leads->user->id,
            'key' => '',
            'client' => $leads->client_name,
            'status' => 'created',
            'updated_at' => $leads->created_at,
            'old_value' =>'',
            'new_value' =>'',
            'time_diff' =>$date,
            'priority' => $leads->priority,
            'location' => $leads->locationTrashed->name,
            'event_type' => ($leads->eventTypeTrashed) ? $leads->eventTypeTrashed->name : ''
        ];
    }
    foreach ($event_history as $key => $events){
        if(count($events->revisionHistory) > 0){
            foreach ($events->revisionHistory as $history){
                $date_diff = \DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s'))->diff(\DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s',strtotime($history->updated_at))));
                if($date_diff->d > 0){
                    $date = $date_diff->d . ' days ago';
                }elseif ($date_diff->h > 0){
                    $date = $date_diff->h . ' hours ago';
                }else{
                    $date = $date_diff->i . ' minutes ago';
                }
                $data[] = [
                    'id' => $events->id,
                    'type' => 'event',
                    'image' => $history->userResponsible()->user_avatar,
                    'user' => $history->userResponsible()->first_name .' '. $history->userResponsible()->last_name,
                    'user_id' => $history->userResponsible()->id,
                    'key' => ucwords(str_replace("_"," ",$history->fieldName())),
                    'client' => $events->booking->booking_name,
                    'status' => 'update',
                    'updated_at' => $history->updated_at,
                    'old_value' =>$history->oldValue(),
                    'new_value' =>$history->newValue(),
                    'time_diff' =>$date,
                    'priority' => $events->status,
                    'location' => $events->booking->location_trashed->name,
                    'event_type' => $events->contactus->event_type_trashed->name
                ];
            }
        }
        $date_diff = \DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s'))->diff(\DateTime::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s',strtotime($events->created_at))));
        if($date_diff->d > 0){
            $date = $date_diff->d . ' days ago';
        }elseif($date_diff->h > 0){
            $date = $date_diff->h . ' hours ago';
        }else{
            $date = $date_diff->i . ' minutes ago';
        }
        $data[] = [
            'id' => $events->id,
            'type' => 'event',
            'image' => ($events->user) ? $events->user->user_avatar : '',
            'user' => ($events->user) ? $events->user->first_name .' '. $events->user->last_name : '',
            'user_id' => ($events->user) ? $events->user->id : '',
            'key' => '',
            'client' => $events->booking->booking_name,
            'status' => 'created',
            'updated_at' => $events->created_at,
            'old_value' =>'',
            'new_value' =>'',
            'time_diff' => $date,
            'priority' => $events->status,
            'location' => $events->booking->location_trashed->name,
            'event_type' => $events->contactus->event_type_trashed->name
        ];
    }
    usort($data, function ($a, $b){
        $dateA = \DateTime::createFromFormat('Y-m-d H:i:s', $a['updated_at']);
        $dateB = \DateTime::createFromFormat('Y-m-d H:i:s', $b['updated_at']);
        return $dateB >= $dateA;
    });
    return $data;
}
Sorry if this is a bad question and please tell me if I need to include anything else
 
     
    