I'm looking for best practice on how to query to database in observer.

Ok so this is the idea, i use observer to catch event `catalog_product_save_after` (which will be fired after product is saved in admin page), after that, i get product id, and query to database to get data. Then after some code, i will update data to database.

I've searched a lot, but what i found is just some direct sql solution (which i don't think is good practice for this). Here is what i've found:

- https://magento.stackexchange.com/questions/212614/magento-2-direct-sql-query-for-insert-not-working
- https://magento.stackexchange.com/questions/202729/magento-2-write-custom-query-in-customer-address-entity-we-cant-save-the-add
- https://magento.stackexchange.com/questions/161243/magento-2-join-custom-table-with-product-collection-while-sql-query-is-running

(i was not try the third one)

Ok so here is what i do so far:<br>

> events.xml

    <?xml version="1.0"?>
    <!--
    /**
     * Copyright © 2013-2017 Magento, Inc. All rights reserved.
     * See COPYING.txt for license details.
     */
    -->
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
        <event name="sales_model_service_quote_submit_success">
            <observer name="sendEmailCustom" instance="Synergy\Butility\Observer\Quote\Webapi\SubmitObserver" />
        </event>
         <event name="catalog_product_save_after">
            <observer name="saveProduct" instance="Synergy\Butility\Observer\ProductSaveObserver" />
        </event>
    </config>

> ProductSaveObserver.php

    <?php
    
    namespace Synergy\Butility\Observer;
    
    use Magento\Framework\Event\ObserverInterface;
    
    class ProductSaveObserver implements ObserverInterface
    {    
    	public function __construct(
            \Magento\Framework\App\ResourceConnection $resource
        ) {
            $this->_resource = $resource;
        }
    
        public function execute(\Magento\Framework\Event\Observer $observer)
        {
            $productId = $observer->getProduct()->getId();
    
            $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
            $resource = $objectManager->get('\Magento\Framework\App\ResourceConnection');
            $connection = $resource->getConnection();
            $tableName = $resource->getTableName('catalog_product_flat_32');
    
            $product_query = "SELECT * FROM " . $tableName . " WHERE entity_id = " . $productId;
    
    		$product = $connection->query($product_query);
    		foreach ($product as $data) {
    			var_dump($product->getData());
    		}
    		exit;
            // $sql = "UPDATE " . $tableName . " SET customer_type = '" . $this->getCustomerType() . "'  WHERE entity_id = " . $this->getEntityId($observer);
            // $connection->query($sql);
        }   
    }

Thanks for reading :)