My code is getting me the result I want on my page, I'm fetching another post and my theme is outputting all of the relevant data I need on the page as expected. 

    function replaceQuery( $query )  {
          
      if ( !is_admin() && $query->is_main_query() && $query->is_page ) {
            
        $childQuery = get_post(13);
        $query->queried_object->ID = $childQuery->ID;
        $query->queried_object->post_content = $childQuery->post_content;
        $query->queried_object->post_title = $childQuery->post_title;
        $query->queried_object->post_name = $childQuery->post_name;
        $query->queried_object->queried_object_id = $childQuery->post_name;
        $query->query_vars['page_id'] = $childQuery->ID;
        $query->query_vars['p'] = $childQuery->ID;
      	
       }
    }
     // I've also used the "parse_query" hook
    add_action( 'pre_get_posts', 'replaceQuery');

The trouble is, I'm getting warnings and notices for everything

    
    Notice:  Indirect modification of overloaded property WP_Query::$queried_object has no effect in mycode.php on line 47
    
    Warning:  Creating default object from empty value in mycode.php on line 47

I found a similar issue here https://wordpress.stackexchange.com/questions/318073/is-category-in-pre-get-posts-results-in-php-notices

It seems like I'm trying to make my changes to the WP Query object either too early or (in the case above) too late. The properties I've tried using as conditionals have eliminated many errors, but when I add anything else, it seems to break the code.

Is there another conditional I can use or perhaps another hook to get rid of these notices & warnings?